【发布时间】:2020-01-10 21:41:58
【问题描述】:
我想根据另一列填充一列中的缺失值。 我有一列美国州的数据,另一列是城市的数据。城市中的一些条目丢失了。我想根据它们所属州的模式城市来填充这些城市。 如果失踪的城市是为了华盛顿特区,那就填满华盛顿。
我试过这个:
states = ['OH', 'WV', 'CA', 'FL', 'GA', 'SC', 'NE', 'IA', 'IL', 'MO', 'WI',
'IN', 'MI', 'NJ', 'NY', 'CT', 'MA', 'RI', 'NH', 'PA', 'KY', 'MD',
'VA', 'DC', 'DE', 'TX', 'WA', 'OR', 'AL', 'TN', 'NC', 'MN', 'KS',
'OK', 'LA', 'CO', 'UT', 'AZ', 'NM', 'NV', 'VT', 'MS', 'AR', 'MT',
'ME', 'ND', 'WY', 'ID', 'SD']
for state in states:
freq_city = df.loc[lambda df: df['State'] == state]['City'].mode()[0]
for df['State'] in states:
if df['State'] == state:
df['City'].fillna(freq_city,inplace=True)
然而,if 语句是模棱两可的,这是正确的。只是不知道下一步该做什么
【问题讨论】:
-
你能发布数据吗?具有所需结果的最小样本框架将帮助我们帮助您。在我的脑海中,它应该类似于:
df['City'] = df.groupby('State')['City'].transform(lambda grp: grp.value_counts().iloc[0])。 (不能使用modeiirc) -
for df['State'] in states:似乎是错误的,您将 Series 重新用作 for 循环中的项目。还有df的结构是什么? -
@BrianJoseph 你离得并不远,只需要修改你的代码看起来像这样:df['City'] = df.groupby('State')['City']。变换(lambda grp: grp.fillna(grp.value_counts().index[0]))
标签: python-3.x pandas conditional-statements missing-data data-cleaning