【发布时间】:2020-12-07 02:15:07
【问题描述】:
我有以下数据框:
case c1 c2
1 x x
2 NaN y
3 x NaN
4 y x
5 NaN NaN
我想得到一个“匹配”列,它将显示哪些记录在“c1”和“c2”中的值相等或不同:
case c1 c2 match
1 x x True
2 NaN y False
3 x NaN False
4 y x False
5 NaN NaN True
我根据另一个 Stack Overflow 问题尝试了以下操作:Comparing two columns and keeping NaNs 但是,我无法将案例 4 和案例 5 都正确。
import pandas as pd
import numpy as np
df = pd.DataFrame({
'case': [1, 2, 3, 4, 5],
'c1': ['x', np.nan,'x','y', np.nan],
'c2': ['x', 'y',np.nan,'x', np.nan],
})
cond1 = df['c1'] == df['c2']
cond2 = (df['c1'].isnull()) == (df['c2'].isnull())
df['c3'] = np.select([cond1, cond2], [True, True], False)
df
【问题讨论】:
标签: python pandas numpy dataframe numpy-ndarray