如何解决如何使用 open 在 python 中过滤数据文件并创建新文件?
我有巨大的 csv,我尝试使用 with open 过滤数据。
我知道我可以在命令行上使用 FINDSTR,但我想使用 python 创建一个新的过滤文件,或者我想创建一个 Pandas 数据框作为输出。
这是我的代码:
outfile = open('my_file2.csv','a')
with open('my_file1.csv','r') as f:
for lines in f:
if '31/10/2018' in lines:
print(lines)
outfile.write(lines)
问题是生成的输出文件是=输入文件,没有过滤器(文件大小一样)
谢谢大家
解决方法
你的代码的问题是最后一行的缩进。它应该在 if 语句中,所以只有包含 '31/10/2018'
的行才会被写入。
outfile = open('my_file2.csv','a')
with open('my_file1.csv','r') as f:
for lines in f:
if '31/10/2018' in lines:
print(lines)
outfile.write(lines)
要使用 Pandas 进行过滤并创建 DataFrame,请执行以下操作:
import pandas as pd
import datetime
# I assume here that the date is in a seperate column,named 'Date'
df = pd.read_csv('my_file1.csv',parse_dates=['Date'])
# Filter on October 31st 2018
df_filter = df[df['Date'].dt.date == datetime.date(2018,10,31)]
# Output to csv
df_filter.to_csv('my_file2.csv',index=False)
(对于非常大的 csv,请查看 pd.read_csv()
参数 'chunksize')
要使用 with open(....) as f:
,您可以执行以下操作:
import pandas as pd
filtered_list = []
with open('my_file1.csv','r') as f:
for lines in f:
if '31/10/2018' in lines:
print(lines)
# Split line by comma into list
line_data = lines.split(',')
filtered_list.append(line_data)
# Convert to dataframe and export as csv
df = pd.DataFrame(filtered_list)
df_filter.to_csv('my_file2.csv',index=False)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。