Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果两列单元格为空,如何删除行?_Python_Pandas_Numpy_Dataframe - Fatal编程技术网

Python 如果两列单元格为空,如何删除行?

Python 如果两列单元格为空,如何删除行?,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

这是我的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_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