如何对目录中的单个文件进行相同的更改?

时间:2017-12-27 19:55:31

标签: python pandas dataframe glob listdir

我有一个目录,我希望对其进行全套csv文件的更改。每个csv都有一行有日期,我想添加一个从文件长度向下计数到1的列(因此文件中最后一个,最近的日期在该列中的值为1)。

我尝试了以下内容:

>import os
>import pandas as pd

>for f in os.listdir(path):

>    df = pd.read_csv(f)

>    df['Countdown'] = range(len(df), 1, -1)

这给了我一个错误

  

FileNotFoundError:文件b'Data.csv'不存在

这是奇怪的,因为它给出了目录中的数据文件的特定名称,因此它可以清楚地看到文件在错误消息中使用它的名称。

我也尝试过使用glob。

>import glob

>data_set = glob.glob(path)

>for f in data_set:

>    df = pd.read_csv(f)

>    df['Countdown'] = range(len(df), 1, -1)

这不起作用,因为它说:

  

ValueError:值的长度与索引的长度

不匹配

这个错误对我有意义,因为随着我向它添加更多文件,数据帧的长度不断增加,因此'len(df)'参数正在改变并且与索引不匹配。

我确信我要做的事情并不是太独特,我只是找不到执行此任务的最佳方法。同样,我正在寻找的结果是,每个文件都有一个列,从最早的日期开始倒数到数据帧的长度,最近的日期的值为1.

感谢您的协助。

1 个答案:

答案 0 :(得分:0)

试试这个:

for f in glob.glob(r'/path/to/dir/*.csv'):
    df = pd.read_csv(f)
    df['Countdown'] = np.arange(len(df), 0, -1)
    # process df...