python - Pandas 检查两列是否相同

标签 python pandas

<分区>

df = {'A':[3, 4, 5, np.nan, 6, 7],
        'B':[np.nan, 4, np.nan, np.nan, 6, 7]}

我有一个包含两列 A 和 B 的数据框。我想创建一个新列 C,这是检查 A 和 B 是否相同的结果,如果相同则保留它,但如果一个为 NaN,则保留其他值。 A 列和 B 列始终是值或 NaN。 A 和 B 中的值始终相同。

我知道如何检查 A 和 B 是否相同:

df['C'] = (df['A'] == df['B]).astype('object')

但这在 C 列中给出了一个 bool 值答案,无论它是对还是错。我的预期输出是:

A   B   C
3  NaN  3
4   4   4
5  NaN  5
NaN NaN NaN
6   6   6
7   7   7

最佳答案

你可以使用np.where()

>>> df = pd.DataFrame({'A':[3, 4, 5, np.nan],'B':[np.nan,4,np.nan,np.nan]})
>>> df
     A    B
0  3.0  NaN
1  4.0  4.0
2  5.0  NaN
3  NaN  NaN

>>> df['C'] = np.where(df['A'].isna(), df['B'], df['A'])
>>> df
     A    B    C
0  3.0  NaN  3.0
1  4.0  4.0  4.0
2  5.0  NaN  5.0
3  NaN  NaN  NaN

编辑样本

如果 df['A'] 是 nan 并且 df['B'] 有值,它会起作用。

>>> df = pd.DataFrame({'A':[3, np.nan, 5, np.nan],'B':[np.nan,4,np.nan,np.nan]})
>>> df
     A    B
0  3.0  NaN
1  NaN  4.0
2  5.0  NaN
3  NaN  NaN

>>> df['C'] = np.where(df['A'].isna(), df['B'], df['A'])
>>> df
     A    B    C
0  3.0  NaN  3.0
1  NaN  4.0  4.0
2  5.0  NaN  5.0
3  NaN  NaN  NaN

谢谢:D

关于python - Pandas 检查两列是否相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58409614/

相关文章:

python - 使用 python 识别两个文件中的坐标匹配

python - 什么是引用窃取和借用?

python - 将推文分类

python - 如何根据条件替换 pandas 列中的字符串?

python - 在 Python 中迭代 Stern-Brocot 树的部分内容

Python:如何使用正则表达式将句子拆分为新行,然后使用空格将标点符号与单词分开?

python - 将 win32com Outlook 附件直接保存到变量

python - 如何使用pandas有效获取多个二值特征?

python - 将数据框与多列条件合并并进行比较

python - 在 pandas 中向日期添加 x 个业务月