我有一个目录,我希望对其进行全套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.
感谢您的协助。
答案 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...