根据最大元素创建新的数据框

时间:2018-10-22 23:45:56

标签: python pandas

我有两个数据框-

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

2 个答案:

答案 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