python - 我们如何才能仅替换特定行中的 NaN?

标签 python pandas

我只需要替换数据帧的特定行中的 NaN 值。我原来的样子是这样的:

import pandas as pd
import numpy as np
pd.DataFrame.from_dict({'col1': 'A B A D E B C D E A'.split(), 
                        'col2': [np.nan, 0, 1, np.nan, np.nan, np.nan, 1, np.nan, np.nan, 0]})

如果col1等于AB并且col2是NaN,那么我想替换它为 0。对于 col1 的其他值,NaN 应保持不变。

我的第一个想法是使用 pd.DataFrame.replace 并编写如下内容:

data.loc[data['col1'].isin(['A', 'B']), 'col2'].replace({np.nan: 0}) 

但它似乎没有按预期工作,并且用 0 填充所有 NaN。

最佳答案

你可以只做一个loc:

df.loc[df.col1.isin(['A','B']) & df.col2.isna(), 'col2'] = 0

关于python - 我们如何才能仅替换特定行中的 NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60158035/

相关文章:

python - 从另一列 pandas df 分配值的有效方法

python - 从 numpy 数组(opencv 图像)获取 ROI 时,为什么 img[y0 :y1, x0 :x1] seem to use an inconsistent range of indicies?

python - Python SKLearn Logistic 回归中的虚拟变量

python - 谷歌表格水平对齐

Python从数据帧中提取行,其中数据位于另一个数据帧的两行之间

python - session Pandas 的时间戳

python - 根据特定条件计算 pandas 中的新列

python - 有没有办法将SearchQuerySet 转换为objects.filter 返回的类型? - Django

python - GAE任务队列: Task not running/outputting

python - 如果 ID 出现多次,Pandas 选择行