gpt4 book ai didi

python - Pandas:连接多个 .csv 文件并返回具有聚合的同名列的 Dataframe

转载 作者:太空宇宙 更新时间:2023-11-04 08:28:08 25 4
gpt4 key购买 nike

我有 100 个 csv 文件。每个文件都包含可能在也可能不在其他 .csv 文件中的列。我需要将所有 csv 文件合并为一个文件,并对具有相同列名的所有列求和。下面是一个有两个 csv 文件的例子,但想象一下它最多可以有 100 个 csv 文件:

第一个 csv 文件:

 User  col1 col2 col3 col4 col5 ....colX
A 1 1 1 2 6 5
B 4 5 6 7 23 6
C 4 6 1 2 4 4

第二个 csv 文件

User  col1 col2 col3 col4 col5 ....colY
A 1 1 5 3 2 3
B 20 4 3 9 6 4
C 2 1 4 3 4 1

结果数据框

User   col1   col2    col3   col4   col5 ....colX colY
A 1+1 1+1 1+5 2+3 6+2 5 3
B 4+20 5+4 6+3 7+9 23+6 6 4
C 4+2 6+1 1+4 2+3 4+4 4 1

我尝试执行以下操作来合并 csv,但列没有聚合。

csvArray = []
for x in range(1,101):
csvArray.append(pd.read_csv("myCsv"+str(x)+".csv"))

full_df = pd.concat(csvArray).fillna(0)

最佳答案

您可以按User 列创建索引并按第一级使用sum:

csvArray = []
for x in range(1,101):
csvArray.append(pd.read_csv("myCsv{}.csv".format(x), index_col=['User']))

或者:

csvArray = [pd.read_csv("myCsv{}.csv".format(x), index_col=['User']) for x in range(1,101)]

full_df = pd.concat(csvArray).fillna(0).sum(level=0).reset_index()

在您的解决方案中,应按User 列聚合:

full_df = pd.concat(csvArray).fillna(0).groupby('User', as_index=False).sum()

关于python - Pandas:连接多个 .csv 文件并返回具有聚合的同名列的 Dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55235691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com