我是熊猫的新手,请问您是否可以帮助我 我有2个DF:
df1 = pd.DataFrame({'A': ['name', 'color', 'city', 'animal'], 'number': ['1', '32', '22', '13']})
df2 = pd.DataFrame({'A': ['name', 'color', 'city', 'animal'], 'number': ['12', '2', '42', '15']})
df1
A number
0 name 1
1 color 32
2 city 22
3 animal 13
DF1
A number
0 name 12
1 color 2
2 city 42
3 animal 15
我需要获取列数的总和,例如
DF1
A number
0 name 13
1 color 34
2 city 64
3 animal 27
但是如果我做new = df1 + df2我会得到
NEW
A number
0 namename 13
1 colorcolor 34
2 citycity 64
3 animalanimal 27
我什至尝试过合并=“ =”“,但是什么也没有。 任何人都可以启发我吗 谢谢
答案 0 :(得分:0)
这里有两种不同的方式:一种使用add
,另一种使用concat
和groupby
。无论哪种情况,您都需要确保number
列的开头是数字(您的示例数据框具有字符串):
# set `number` to numeric (could be float, I chose int here)
df1['number'] = df1['number'].astype(int)
df2['number'] = df2['number'].astype(int)
# method 1, set the index to `A` in each and add the two frames together:
df1.set_index('A').add(df2.set_index('A')).reset_index()
# method 2, concatenate the two frames, groupby A, and get the sum:
pd.concat((df1,df2)).groupby('A',as_index=False).sum()
输出:
A number
0 animal 28
1 city 64
2 color 34
3 name 13
答案 1 :(得分:0)
合并不是一个坏主意,您只需要记住将数字序列转换为数字,选择要合并的列,然后通过select_dtypes
对数字列求和:
df1['number'] = pd.to_numeric(df1['number'])
df2['number'] = pd.to_numeric(df2['number'])
df = df1.merge(df2, on='A')
df['number'] = df.select_dtypes(include='number').sum(1) # 'number' means numeric columns
df = df[['A', 'number']]
print(df)
A number
0 name 13
1 color 34
2 city 64
3 animal 28