比较两个数据帧并将结果放回数据帧时:
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'降低'降低'或者更高的'? 我想知道结果是否更高,更低或更低,这就是我要问的原因。 如果输出不高或低,(真或假)则必须相等。
答案 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