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

标签 python pandas csv concatenation

我有 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/

相关文章:

python - 如何在pyqt中的QTextEdit上创建超链接以启动邮件

python - 动画+在矩阵之间平滑插值

python - Flask 按钮将变量传递回 python

Python神经网络: running 10 iterations

python - 用Python中的CSV文件中的值替换变量

python - Pandas Groupby聚合返回自定义输出(不是一行)

python - 根据来自另一列 pandas 的相同或更接近的值替换列中的值

python - 有没有办法制作虚拟变量来计算出现次数?

android - 从 onActivityResult Intent 获取一个或多个文件及其文件名?

python - 在 python 中的 CSV 文件的 2 列中写入 2 个列表