pandas - 如何使用熊猫检查数据框中的两列是否都有值
问题描述
I have a df:
col1 col2 col3 col4 col5
bat cell val val
cat ribo val val
rat dna val val
dog rna val val val
如果我比较 col4 和 col5 我想得到输出:
col1 col2 col3 col4 col5
dog rna val val val
bec col4 具有价值,而 col5 具有价值。
如果我比较 col3 和 col5 我应该得到输出:
col1 col2 col3 col4 col5
bat cell val val
rat dna val val
dog rna val val val
但是当我使用以下代码时:
dfn = df[df['col4'] != df['col5']]
没有得到正确的df值。
我想将输出添加到数据框中:
col1 col2 col3 col5
dog rna val val
解决方案
我们可以为此编写一个简单的函数来比较空的列和行:
方法一:使用Boolean indexing
withnotnull
df.replace('', np.NaN, inplace=True)
def compare_cols(dataframe, column1, column2):
return df[df[column1].notnull() & df[column2].notnull()]
print(compare_cols(df, 'col4', 'col5'))
print('\n')
print(compare_cols(df, 'col3', 'col5'))
col1 col2 col3 col4 col5
3 dog rna val val val
col1 col2 col3 col4 col5
0 bat cell val NaN val
2 rat dna val NaN val
3 dog rna val val val
在 Jezraels 发表评论后进行编辑。我们可以使用dropna
with subset
which 给出相同的输出:
方法二:使用dropna
def compare_cols2(dataframe, column1, column2):
return df.dropna(subset=[column1, column2])
print(compare_cols2(df, 'col4', 'col5'))
print('\n')
print(compare_cols2(df, 'col3', 'col5'))
col1 col2 col3 col4 col5
3 dog rna val val val
col1 col2 col3 col4 col5
0 bat cell val NaN val
2 rat dna val NaN val
3 dog rna val val val
请注意,我将空格 ('') 替换为,NaN
以便我们可以使用notnull()
方法。
推荐阅读
- vb.net - 动态添加到表单 vb.net 时,有没有办法链接标签和日期字段
- ios - 在生产环境中创建 CloudKit 订阅
- sorting - 推力——按键排序两个向量
- javascript - VueJS - 如何在 HTML 字符串中转换 this.$slots.default?
- php - Ampps 虚拟主机在最新的 macos catalina 中不起作用
- javascript - 更新选择字段值的脚本
- django - 如何为 DateTimeField 实现 SplitDateTImeWidget
- ios - iOS应用程序中的youtube iFrame导致全屏后半屏变黑
- javascript - 根据类名更改 vue.js 中的背景颜色
- javascript - Vuelidate 是否支持 VueJs 中的打字稿?