我有两个数据帧如下
df1 = pd.DataFrame( {
"names": ['alpha', 'bravo', 'charlie', 'delta', 'echo', 'foxtrot', 'golf'],
"Debit": [0, 5000, 0, 5000, 3000, 0, 700],
"Credit": [1000, 0, 2000, 0, 0, 8000, 0],
} )
和
df2 = pd.DataFrame( {
"names": ['alpha', 'bravo', 'charlie', 'delta', 'echo', 'foxtrot'],
"db_head": [1, 1, 1, 1, 1, 1],
"cr_head": [2, 2, 2, 2, 2, 2],
} )
我想要的输出是:
names Debit Credit head
0 alpha 0 1000 2
1 bravo 5000 0 1
2 charlie 0 2000 2
3 delta 5000 0 1
4 echo 3000 0 1
5 foxtrot 0 8000 2
I tried to merge but did not underst和 how to get the value from two of the last columns based on the current df's column values
如果无条件合并
print(df1.merge(df2, how="inner", on="names"))
通过简单地合并这两个数据帧,结果如下
names Debit Credit db_head cr_head
0 alpha 0 1000 1 2
1 bravo 5000 0 1 2
2 charlie 0 2000 1 2
3 delta 5000 0 1 2
4 echo 3000 0 1 2
5 foxtrot 0 8000 1 2
我try 了这两种方法,但这两种方法都有错误
df1['acchead'] = [df2[df2['names'] == x].db_head.item() if y > 0 else df2[df2['names'] == x].cr_head.item() for x, y in [df1['names'], df1['Debit']]]
df1['acchead'] = [df2[df2['names'] == x].db_head.item() if df1.Debit.item() > 0 else df2[df2['names'] == x].cr_head.item() for x in [df1['names']]]
任何帮助都将不胜感激.