【发布时间】:2018-05-16 07:15:06
【问题描述】:
如何使用 pandas 填补数据框中特定类别数据的缺失数据?
我在选择一个类别后使用了 fillna(method='ffill') ,但这会在其他类别上创建 NaN 值。有没有更好的办法?
我使用它,即我选择类别“Buurt”并应用填充(以插入缺少的邮政编码)。但是具有另一个类别('Wijk')的行将变为 NaN。
df['Zipcode'] = df.loc[(df['RegionType'] == 'Buurt'), 'Zipcode'].fillna(method='ffill')
df 前后:
City Zipcode RegionType
Codering
BU06100305 Sliedrecht 3362 Buurt
BU06100306 Sliedrecht 3361 Buurt
BU06100307 Sliedrecht 3361 Buurt
WK061004 Sliedrecht . Wijk
BU06100401 Sliedrecht NaN Buurt
BU06100402 Sliedrecht NaN Buurt
BU06100403 Sliedrecht 3364 Buurt
BU06100404 Sliedrecht 3364 Buurt
BU06100405 Sliedrecht 3364 Buurt
BU06100406 Sliedrecht 3364 Buurt
City Zipcode RegionType
Codering
BU06100305 Sliedrecht 3362 Buurt
BU06100306 Sliedrecht 3361 Buurt
BU06100307 Sliedrecht 3361 Buurt
WK061004 Sliedrecht NaN Wijk
BU06100401 Sliedrecht 3361 Buurt
BU06100402 Sliedrecht 3361 Buurt
BU06100403 Sliedrecht 3364 Buurt
BU06100404 Sliedrecht 3364 Buurt
BU06100405 Sliedrecht 3364 Buurt
BU06100406 Sliedrecht 3364 Buurt
我可以将 NaN 改回点 (.),但我觉得必须有更好的方法。特别是因为 'Buurt' 的行实际上是用一个点 (.) 填充的,而我首先将它们更改为 NaN 以执行 fillna(method='ffill')...
serieBuurtNoZipcode = (df['RegioType'] == 'Buurt') & (df['Zipcode'] == '.')
df.loc[(serieBuurtNoZipcode), 'Zipcode'] = np.nan
我怎样才能以更聪明的方式做到这一点?非常感谢!
【问题讨论】: