заполнение недостающих данных на основе другого столбца - PullRequest
0 голосов
/ 11 января 2020

Я хочу заполнить пропущенные значения в одном столбце на основе другого столбца. У меня есть данные с колонкой штатов США и другой с городами. Некоторые записи в городах отсутствуют. Я хочу заполнить эти города в зависимости от города, в котором они находятся. если пропавший город для D C, заполните Вашингтон.

Я пробовал это:

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 неоднозначно и правильно. Просто не знаю, что делать дальше

1 Ответ

0 голосов
/ 11 января 2020

Это должно сработать:

В зависимости от того, что вы подразумеваете под "отсутствующим городом",

В случае, если это None:

df.loc[df["City"].isna(), "City"]=\
    df.groupby("State")["City"].apply(pd.Series.mode)\
    .loc[df.loc[df["City"].isna(), "State"]].to_list()

В случае, если это пустая строка:

df.loc[df["City"]=="", "City"]=\
    df.groupby("State")["City"].apply(pd.Series.mode)\
    .loc[df.loc[df["City"]=="", "State"]].to_list()

В случае, если это одновременно:

df.loc[df["City"].fillna("")=="", "City"]=\
    df.groupby("State")["City"].apply(pd.Series.mode)\
    .loc[df.loc[df["City"].fillna("")=="", "State"]].to_list()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...