python - 根据条件将多个列值设置为 NaN
问题描述
我正在尝试根据应用于其中一列的条件将数据框的 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
解决方案
您可以尝试此处找到的 df.loc:https ://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.loc.html 。
通过这种方式,您可以声明选择行的条件,以及要应用更改的列列表。
使用来自 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
推荐阅读
- python - 使用 Python statsmodel 进行逻辑回归
- r - dplyr::inner_join 订单是否保留?
- ios - 我在自定义 UITableViewCell 中以编程方式设置布局约束时遇到问题
- nginx - Laravel homestead - 查询字符串长度超过 5564 个字符时无法访问站点?
- pyspark - 当源表的一行中的多个列与目标表中单行的相同列匹配时,从目标 spark delta 表中删除一行
- postgresql - postgres 服务器在本地主机上运行,但 postico、metasploit 无法访问它
- html - 网页在多种分辨率下占据 100% 屏幕的最佳方式
- java - 带有rabbitmq的Spring websocket - 在订阅级别添加安全性
- r - 从不同文件夹导入文件,添加从每个文件名中提取的值的列?
- javascript - 使用下拉模式中的模态反应 CTA