我的磁盘上有数百个CSV文件,每天添加一个文件,我想从每个文件中提取一行并将它们放在一个新文件中。然后我想每天为同一个文件添加值。 CSV文件如下所示:
business_day,commodity,total,total_lots
20160831,CTC,Total,385
20160901,CTC,Total,555
.
.
我想从每个文件中获取包含“Total”的行。新文件应如下所示:
{{1}}
我磁盘上的原始文件名为'20160831_foo.CSV','20160901_foo.CSV等。
在谷歌搜索之后,我还没有看到任何关于如何从CSV文件中仅提取一个值的示例。任何提示/帮助非常感谢。很高兴使用熊猫,如果这让生活更轻松。
答案 0 :(得分:1)
我最终得到了以下内容:
import pandas as pd
import glob
list_ = []
filenames = glob.glob('c:\\Financial Data\\*_DAILY.csv')
for filename in filenames:
df = pd.read_csv(filename, index_col = None, usecols = ['business_day', 'commodity', 'total', 'total_lots'], parse_dates = ['business_day'], infer_datetime_format = True)
df = df[((df['commodity'] == 'CTC') & (df['total'] == 'Total'))]
list_.append(df)
df = pd.concat(list_, ignore_index = True)
df['total_lots'] = df['total_lots'].astype(int)
df = df.sort_values(['business_day'])
df = df.set_index('business_day')
然后我将其保存为我所需的文件。
答案 1 :(得分:0)
阅读csv文件并直接处理它们:
with open('some.csv', newline='') as f:
reader = csv.reader(f)
for row in reader:
# do something here with `row`
break
我建议您在处理完所需的行后将行附加到列表中,然后将其传递到pandas Dataframe,这将简化您的数据操作。