循环合并多个csv文件

Loop to merge multiple csv files

我是 python 的新手。请告诉我以下问题。

通过使用 forwhile 循环,我想将大约 200 个 csv 文件合并到一个 csv 文件中。 head(5) 的一些 csv 文件如下(每个 csv 文件是 1122 行 * 2 列)。

0sec.csv
    ID  Damage
0   0   2697.5
1   2   1431.7
2   3   2719.3
3   4   345.8
4   5   349.1

1sec.csv
    ID  Damage
0   0   507.1
1   2   0.0
2   3   9644.3
3   4   388.7
4   5   0.0

我的目标是制作如下所示的单个 csv 文件。

total_damage.csv
    ID      0sec        1sec    ~~~    199sec        200sec
0   0       2697.5      507.1          xxx.x         xxx.x
1   2       1431.7      0.0            xxx.x         xxx.x
2   3       2719.3      9644.3         xxx.x         xxx.x
3   4       345.8       388.7          xxx.x         xxx.x
4   5       349.1       0.0            xxx.x         xxx.x

我试过的

files = sorted(glob.glob('./python/*'))

df = pd.DataFrame()
for i, f in enumerate(files):
    file = pd.read_csv(f)
    file.rename(columns = {'Damage': '{}sec'.format(i)})
    df = pd.merge(df, file)

df.to_csv('./python/total_Damage.csv', index=False)

错误信息

No common columns to perform merge on. Merge options: left_on=None, right_on=None, left_index=False, right_index=False

如果你能教我 pd.merge with loop 的当前用法,我将不胜感激。

你快到了。首先,你实际上并没有重命名,因为你错过了重命名前面的file=

然后,要向数据框添加一列,您只需执行 df[col]=file[col]

因此:

df = pd.DataFrame()
for i, f in enumerate(files):
    file = pd.read_csv(f)
    file = file.rename(columns = {'Damage': '{}sec'.format(i)})
    df['{}sec'.format(i)] = file['{}sec'.format(i)]

不要忘记在迭代之前添加一次 id 列。