如何从多个CSV文件中提取单行到新文件

时间:2016-09-05 13:35:30

标签: python python-3.x csv pandas

我的磁盘上有数百个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文件中仅提取一个值的示例。任何提示/帮助非常感谢。很高兴使用熊猫,如果这让生活更轻松。

2 个答案:

答案 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,这将简化您的数据操作。