Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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 - Fatal编程技术网

Python 基于规则操纵列中的值

Python 基于规则操纵列中的值,python,pandas,Python,Pandas,我在一个数据框中有3列-A、B和C。我想做的是,如果A不为null,B | C不为null,那么A中的行应该设置为null 这就是我遇到的错误:无法从空轴执行非空拍摄。使用: 使用: 这里不需要第一个条件,所以解决方案应该简化: dffinal = pd.DataFrame({ 'A':[np.nan,np.nan,4,5,5,np.nan], 'B':[7,np.nan,np.nan,4,np.nan,np.nan], 'C':[1,3,5

我在一个数据框中有3列-A、B和C。我想做的是,如果A不为null,B | C不为null,那么A中的行应该设置为null

这就是我遇到的错误:无法从空轴执行非空拍摄。

使用:

使用:


这里不需要第一个条件,所以解决方案应该简化:

dffinal = pd.DataFrame({
         'A':[np.nan,np.nan,4,5,5,np.nan],
         'B':[7,np.nan,np.nan,4,np.nan,np.nan],
         'C':[1,3,5,7,np.nan,np.nan],
})

print (dffinal)
     A    B    C
0  NaN  7.0  1.0
1  NaN  NaN  3.0
2  4.0  NaN  5.0
3  5.0  4.0  7.0
4  5.0  NaN  NaN
5  NaN  NaN  NaN

mask = (dffinal['B'].notnull() | dffinal['C'].notnull())

dffinal.loc[mask, 'A'] = np.nan
print (dffinal)
     A    B    C
0  NaN  7.0  1.0
1  NaN  NaN  3.0
2  NaN  NaN  5.0
3  NaN  4.0  7.0
4  5.0  NaN  NaN
5  NaN  NaN  NaN
与第一种情况相同的输出:

mask = dffinal['A'].notnull() & (dffinal['B'].notnull() | dffinal['C'].notnull())

dffinal.loc[mask, 'A'] = np.nan
print (dffinal)
     A    B    C
0  NaN  7.0  1.0
1  NaN  NaN  3.0
2  NaN  NaN  5.0
3  NaN  4.0  7.0
4  5.0  NaN  NaN
5  NaN  NaN  NaN

这里不需要第一个条件,所以解决方案应该简化:

dffinal = pd.DataFrame({
         'A':[np.nan,np.nan,4,5,5,np.nan],
         'B':[7,np.nan,np.nan,4,np.nan,np.nan],
         'C':[1,3,5,7,np.nan,np.nan],
})

print (dffinal)
     A    B    C
0  NaN  7.0  1.0
1  NaN  NaN  3.0
2  4.0  NaN  5.0
3  5.0  4.0  7.0
4  5.0  NaN  NaN
5  NaN  NaN  NaN

mask = (dffinal['B'].notnull() | dffinal['C'].notnull())

dffinal.loc[mask, 'A'] = np.nan
print (dffinal)
     A    B    C
0  NaN  7.0  1.0
1  NaN  NaN  3.0
2  NaN  NaN  5.0
3  NaN  4.0  7.0
4  5.0  NaN  NaN
5  NaN  NaN  NaN
与第一种情况相同的输出:

mask = dffinal['A'].notnull() & (dffinal['B'].notnull() | dffinal['C'].notnull())

dffinal.loc[mask, 'A'] = np.nan
print (dffinal)
     A    B    C
0  NaN  7.0  1.0
1  NaN  NaN  3.0
2  NaN  NaN  5.0
3  NaN  4.0  7.0
4  5.0  NaN  NaN
5  NaN  NaN  NaN