Python Pandas:concat多个.csv文件并返回聚合了同名列的数据帧
我有100个csv文件。每个文件包含的列可能在其他.csv文件中,也可能不在其中。我需要将所有csv文件合并为一个文件,并对具有相同列名的所有列求和。下面是一个包含两个csv文件的示例,但假设它最多可以包含100个csv文件: 第一个csv文件:Python Pandas:concat多个.csv文件并返回聚合了同名列的数据帧,python,pandas,csv,concat,Python,Pandas,Csv,Concat,我有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
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
结果数据帧
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']))
或:
在您的解决方案中,应按
用户
列进行聚合:
full_df = pd.concat(csvArray).fillna(0).groupby('User', as_index=False).sum()
您可以按
User
列创建索引,并按第一级使用sum
:
csvArray = []
for x in range(1,101):
csvArray.append(pd.read_csv("myCsv{}.csv".format(x), index_col=['User']))
或:
在您的解决方案中,应按
用户
列进行聚合:
full_df = pd.concat(csvArray).fillna(0).groupby('User', as_index=False).sum()
您也可以尝试:
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)
您也可以尝试:
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)
@用户5844628-不客气!如果我的回答有帮助,别忘了接受它。@user5844628-不客气!如果我的回答有帮助,别忘了接受它。