仅在两列中包含 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
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