仅在两列中包含 NaN 的那些行中填写 NaN

Fill in NaN only in those rows that contain in two Columns NaN

enter image description here我只想填充两列中都包含 NaN 的行(索引 3)(使用 01 年 1 月 1 日),将其他行保留为 NaN。

问题:

index---day----month----year

0-------Nan----03--------93

1-------18-----Nan-------85

2-------8------7---------71

3-------Nan------Nan------75

解决方案

index---day----month----year

0-------Nan----03--------93

1-------18-----Nan-------85

2-------8------7---------71

3-------1------01--------75

如果您只想按索引更改特定行

df.loc[3,["day","month"]]  = [1,1] 

您可以通过 3 个步骤完成。首先,您仅用字母“-”(或数据集中未使用的其他字母)替换一列中的所有 NaN 值。其次,用“1”和“01”填充“day”和“month”列中的 NaN 值。最后,您为“-”值重新创建 NaN 值。代码看起来像这样:

import numpy as np
import pandas as pd

data = {
    "day" : [np.nan, "18", "08", np.nan, np.nan],
    "month" : ["03", np.nan, "7", np.nan, np.nan],
    "year" : ["93", "85", "71", "75", "56"],
}
df = pd.DataFrame(data)
values = {'day': "1", 'month': "01"}
df = df.fillna("-", limit=1).fillna(value=values).replace("-", np.nan)
df