在pandas python

时间:2018-04-19 13:36:17

标签: python pandas dataframe

比较两个数据帧并将结果放回数据帧时:

dfA = pd.DataFrame({'Column':[1,2,3,4]})

或以人类可读的形式:

    Column
0   1
1   2
2   3
3   4

dfB = pd.DataFrame({'Column':[1,2,4,3]})

或以人类可读的形式:

    Column
0   1
1   2
2   4
3   3

pd.DataFrame(dfA > dfB)

pandas输出具有true或false值的数据帧。

    Column
0   False
1   False
2   False
3   True

是否可以更改' true'或者' false'降低'降低'或者更高的'? 我想知道结果是否更高,更低或更低,这就是我要问的原因。 如果输出不高或低,(真或假)则必须相等。

2 个答案:

答案 0 :(得分:2)

您可以使用map

In [10]: pd.DataFrame(dfA > dfB)['Column'].map({True: 'higher', False: 'lower'})
Out[10]:
0     lower
1     lower
2     lower
3    higher
Name: Column, dtype: object

答案 1 :(得分:1)

我建议使用np.where来提高性能/简单性。

pd.DataFrame(np.where(dfA > dfB, 'higher', 'lower'), columns=['col'])

      col
0   lower
1   lower
2   lower
3  higher

如果需要,您还可以使用np.where

嵌套条件
m1 = dfA > dfB
m2 = dfA < dfB  
pd.DataFrame(
    np.where(m1, 'higher', np.where(m2, 'lower', 'equal')),
    columns=['col']
)

或者,使用与np.select略有不同的方法。

pd.DataFrame(
    np.select([m1, m2], ['higher', 'lower'], default='equal'),
    columns=['col']
)

      col
0   equal
1   equal
2   lower
3  higher