如何合并两个数据帧并根据另一列的比较设置一个列?

时间:2020-08-05 07:35:35

标签: python dataframe

one = DataFrame({'a': ['apple', 'boy'], 'b': [4, 2]})
two = DataFrame({'a': ['cat', 'dog'], 'b': [5, 1]})
>>> one
       a  b
0  apple  4
1    boy  2

>>>
>>>
>>> two
       a  b
0    cat  5
1    dog  1

我希望合并的数据帧(名为“结果”)为:

>>> result
       a  b
0    cat  5
1    boy  2

因为4 <5并且result ['a'] [0]应该设置为'cat'而不是'apple'; 1 <2,并且result ['a'] [1]应该设置为'boy'而不是'dog';

该怎么做?

2 个答案:

答案 0 :(得分:0)

这是您要找的吗?

import numpy as np
result = pd.DataFrame({
    'a': np.where(one.b < two.b, two.a, one.a),
    'b': np.where(one.b < two.b, two.b, one.b)
})
print(result)

输出

     a  b
0  cat  5
1  boy  2

答案 1 :(得分:0)

import pandas as pd
one = pd.DataFrame({'a': ['apple', 'boy'], 'b': [4, 2]})
two = pd.DataFrame({'a': ['cat', 'dog'], 'b': [5, 1]})
result = one.append(two)
result[(result['b']>1)].iloc[1:].sort_index()

输出:

结果 b 0猫5 1个男孩2