我有 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)
2 回答
慕丝7291255
TA贡献1859条经验 获得超6个赞
您可以按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()
温温酱
TA贡献1752条经验 获得超4个赞
您也可以尝试:
data = pd.DataFrame()
for x in range(1, 101):
df = pd.read_csv('mycsv'+str(x)+'.csv').set_index('User')
data = data.add(df, fill_value = 0).fillna(0)
添加回答
举报
0/150
提交
取消