我只需要替换数据帧的特定行中的 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
等于A
或B
并且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/