Python 熊猫:如何合并不同的数据帧?
我有两个数据帧Python 熊猫:如何合并不同的数据帧?,python,pandas,dataframe,group-by,Python,Pandas,Dataframe,Group By,我有两个数据帧df1和df2 第一个数据框包含人名: df1 NAME 0 Paul 1 Jack 2 Anna 3 Tom 4 Eva 以及第二个姓名,其中包含每个人收到和支付的金额信息。有些人不在df1中,例如Zack。有些人无法出现在列表中,例如Tom df2 Receiver Payer Amount 0 Paul Jack 300 1 Anna Paul 600 2 Anna Eva 10
df1
和df2
第一个数据框包含人名:
df1 NAME
0 Paul
1 Jack
2 Anna
3 Tom
4 Eva
以及第二个姓名,其中包含每个人收到和支付的金额信息。有些人不在df1
中,例如Zack
。有些人无法出现在列表中,例如Tom
df2 Receiver Payer Amount
0 Paul Jack 300
1 Anna Paul 600
2 Anna Eva 100
3 Eva Zack 400
我想创建一个包含每个人收到和支付的所有金额的数据框。因此:
df3 NAME RECEIVED PAYED
0 Paul 300 600
1 Jack 0 300
2 Anna 700 0
3 Tom NaN NaN
4 Eva 400 100
使用:
说明:
print (df2.melt('Amount', value_name='NAME', var_name='type'))
Amount type NAME
0 300 Receiver Paul
1 600 Receiver Anna
2 100 Receiver Anna
3 400 Receiver Eva
4 300 Payer Jack
5 600 Payer Paul
6 100 Payer Eva
7 400 Payer Zack
NAME
和type
MultiIndex
DataFrame
另一个解决方案包括: 最后一列(如有必要)
重命名
列:
df3 = df3.rename(columns={'Receiver':'RECEIVED','Payer':'PAYED'})
print (df3)
NAME PAYED RECEIVED
0 Paul 600.0 300.0
1 Jack 300.0 0.0
2 Anna 0.0 700.0
3 Tom NaN NaN
4 Eva 100.0 400.0
详细信息:
print (df2.melt('Amount', value_name='NAME', var_name='type'))
Amount type NAME
0 300 Receiver Paul
1 600 Receiver Anna
2 100 Receiver Anna
3 400 Receiver Eva
4 300 Payer Jack
5 600 Payer Paul
6 100 Payer Eva
7 400 Payer Zack
我收到一个错误
'DataFrame'对象没有属性'melt'
@emax-这是版本问题,请将df2.melt('Amount',value\u name='name',var\u name='type')
更改为pd.melt(df2,'Amount',value\u name='name',var\u name='type')
@jazreal很棒,谢谢。我收到了与的组\u相同的错误。我应该用同样的方法解决这个问题吗?@emax-你认为groupby
?相反,group\u by
,似乎是打字错误。@jazreal是的,是打字错误,对不起。但是在groupby
行中,我有一个错误:TypeError:unhabable type:list
print (df2.melt('Amount', value_name='NAME', var_name='type'))
Amount type NAME
0 300 Receiver Paul
1 600 Receiver Anna
2 100 Receiver Anna
3 400 Receiver Eva
4 300 Payer Jack
5 600 Payer Paul
6 100 Payer Eva
7 400 Payer Zack