Python 合并期间,合并列
我需要使用具有以下属性的pandas合并多个数据帧:Python 合并期间,合并列,python,pandas,Python,Pandas,我需要使用具有以下属性的pandas合并多个数据帧: 数据帧总是有相同的列,例如名称,类型,和值 合并需要考虑两列,name和type,以便识别匹配项 数据帧可能具有不同的行数 在上面的示例中,另一列value,应该在合并后生成一列。如果两个数据集有一行具有相同的名称和类型,则值的结果应为每个数据集的值之和 我不关心行的索引 例如,如果我有数据帧df1: df1: name type value 0 foo A 11 1 bar B
- 数据帧总是有相同的列,例如
,名称
,和类型
值
- 合并需要考虑两列,
和name
,以便识别匹配项type
- 数据帧可能具有不同的行数
- 在上面的示例中,另一列
,应该在合并后生成一列。如果两个数据集有一行具有相同的value
和名称
,则类型
的结果应为每个数据集的值之和值
- 我不关心行的索引
数据帧df1
:
df1:
name type value
0 foo A 11
1 bar B 12
以及数据帧df2
:
df2:
name type value
0 foo A 21
1 bar C 22
2 baz C 23
那么我希望结果是
result_want:
name type value
0 foo A 32
1 bar B 12
2 bar C 22
3 baz C 23
到目前为止,我发现最好的方法是如何进行合并,如下所示:
import pandas as pd
df1 = pd.DataFrame({
"name": ["foo", "bar"],
"type": ["A", "B"],
"value": [11, 12]
})
df2 = pd.DataFrame({
"name": ["foo", "bar", "baz"],
"type": ["A", "C", "C"],
"value": [21, 22, 23]
})
result = pd.merge(df1, df2, how='outer', on=['name', 'type'])
print(result)
给予
你可以在这里用
name type value_x value_y
0 foo A 11.0 21.0
1 bar B 12.0 NaN
2 bar C NaN 22.0
3 baz C NaN 23.0
out = pd.concat([df1, df2])
out.groupby(['name', 'type'], as_index=False).sum()
name type value
0 bar B 12
1 bar C 22
2 baz C 23
3 foo A 32