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

问题描述 投票:0回答:1

我有一个目录,我想要改变的全套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。

谢谢您的帮助。

python pandas dataframe glob listdir
1个回答
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...
© www.soinside.com 2019 - 2024. All rights reserved.