我正在尝试根据应用于其中一列的条件将数据框的2列中的值设置为null。
我知道如何根据条件将1列的值设置为null。在下面的示例中,我使用col3做到了。我的问题是如何将同一行的col2中的值设置为null?
df = pd.DataFrame([['a',1, 10],
['b',2, 20],
['c',3, 30],
['d',4, 40],
['e',5, 50]], columns=['col1','col2','col3'])
df
Out[121]:
col1 col2 col3
0 a 1 10
1 b 2 20
2 c 3 30
3 d 4 40
4 e 5 50
df['col3'].mask(df['col3']<30,inplace=True)
df
Out[123]:
col1 col2 col3
0 a 1 NaN
1 b 2 NaN
2 c 3 30.0
3 d 4 40.0
4 e 5 50.0
尝试了以下操作,但不起作用
df['col2','col3'].mask(df['col3']<30,inplace=True)
我想要的输出是
col1 col2 col3
0 a NaN NaN
1 b NaN NaN
2 c 3 30.0
3 d 4 40.0
4 e 5 50.0
答案 0 :(得分:3)
您可以尝试在https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.loc.html上找到df.loc。
通过这种方式,您可以陈述条件以选择行以及要应用更改的列的列表。
使用numpy中的常量NaN:https://docs.scipy.org/doc/numpy/reference/constants.html?highlight=nan#numpy.nan。
df.loc[df['col3']<30,['col2','col3']] = np.nan
生成的df将是。
col1 col2 col3
0 a NaN NaN
1 b NaN NaN
2 c 3.0 30.0
3 d 4.0 40.0
4 e 5.0 50.0