我有两个数据框-
cols = ['A','B']
data = [[-1,2],[0,2],[5,1]]
data = np.asarray(data)
indices = np.arange(0,len(data))
df = pd.DataFrame(data, index=indices, columns=cols)
cols = ['A','B']
data2 = [[-13,2],[-1,2],[0,4],[2,1],[5,0]]
data2 = np.asarray(data2)
indices = np.arange(0,len(data2))
df2 = pd.DataFrame(data2, index=indices, columns=cols)
现在,我想创建一个新的数据框,其中的任一数据框的A
最大值与B
相同。
因此,输出将是-
A B
0 -13 2
1 -1 2
2 0 4
3 2 1
4 5 1
答案 0 :(得分:4)
使用drop_duplicates
pd.concat([df2,df]).sort_values('B').drop_duplicates('A',keep='last')
Out[80]:
A B
3 2 1
2 5 1
0 -13 2
0 -1 2
2 0 4
答案 1 :(得分:2)
您可以对齐索引,进行串联,然后取最大值:
res = pd.concat([df.set_index('A'), df2.set_index('A')], axis=1)\
.max(1).astype(int).rename('B').reset_index()
print(res)
A B
0 -13 2
1 -1 2
2 0 4
3 2 1
4 5 1