Python 如果两列单元格为空,如何删除行?
这是我的DFPython 如果两列单元格为空,如何删除行?,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,这是我的DF A B C 1 10 10 2 3 12 12 4 5 21 22 我想比较B列和C列,然后我必须检查它们是否都为空,然后我想从DF中删除这些行 输出看起来是这样的 A B C 1 10 10 3 12 12 5 21 22 然后我需要再次检查B和C的两列,比如值是否相同,如果相同,我需要创建一列,比如validation_results和print Y,如果不相同,则print N A B C Validation_Resu
A B C
1 10 10
2
3 12 12
4
5 21 22
我想比较B列和C列,然后我必须检查它们是否都为空,然后我想从DF中删除这些行
输出看起来是这样的
A B C
1 10 10
3 12 12
5 21 22
然后我需要再次检查B和C的两列,比如值是否相同,如果相同,我需要创建一列,比如validation_results和print Y,如果不相同,则print N
A B C Validation_Results
1 10 10 Y
3 12 12 Y
5 21 22 N
我是python新手,所以这里的任何人都告诉我如何使用最少的代码行来完成这项工作。如果没有值丢失值,解决方案: 与以下人员创建的新列一起使用: 如果没有值是空字符串,则解决方案:
print (df)
A B C
0 1 10 10
1 2
2 3 12 12
3 4
4 5 21 22
df1 = (df[df[['B','C']].ne('').all(axis=1)]
.assign(Validation_Results = lambda x: np.where(x.B==x.C, 'Y', 'N')))
print (df1)
A B C Validation_Results
0 1 10 10 Y
2 3 12 12 Y
4 5 21 22 N
详细信息:
首先通过比较两列是否不相等'
-空字符串:
print (df[['B','C']].ne(''))
B C
0 True True
1 False False
2 True True
3 False False
4 True True
然后通过以下方式测试行中的两个值是否均True
s:
并通过以下方式进行过滤:
是 啊我不知道为什么它结束了这个问题中的错误。你有足够的代表支持这个问题。问题很可能是发布了一组要求,但没有显示出你自己解决问题的努力。这与你的问题完全相同。为什么要再次发布它?我尝试了此代码,但它没有删除行。对此表示抱歉。它只会正确检查空值。赋值后lambda exprxns工作正常。@user11646543-现在可以检查了吗?是的,现在可以了,请告诉我第一个代码和第二个代码的区别是什么。ne()方法目的?@user11646543-答案已编辑。很高兴看到np的一个有用应用程序。where finally:)
print (df[['B','C']].ne(''))
B C
0 True True
1 False False
2 True True
3 False False
4 True True
print (df[['B','C']].ne('').all(axis=1))
0 True
1 False
2 True
3 False
4 True
dtype: bool
print (df[df[['B','C']].ne('').all(axis=1)])
A B C
0 1 10 10
2 3 12 12
4 5 21 22