Как поместить индивидуальные значения Смертей в Штатах в Фрейм Данных - PullRequest
0 голосов
/ 07 апреля 2020

Итак, я создал фрейм данных с именем столбца States

States = ('California','Utah','Texas','New York','Ohio','Mississippi')

Deaths = pd.DataFrame({'States' : States})

Фрейм данных в порядке. Тем не менее, когда я создаю для l oop, чтобы получить некоторую информацию из другого фрейма данных (df), и применяю функцию суммы в a для l oop, он принимает это только для последней переменной в разделе «Состояния».

for x in States:
    Deaths['Total Deaths'] = df[df['state'] == x]['n_killed'].sum()

Ответы [ 2 ]

0 голосов
/ 08 апреля 2020

Да, конечно, я принял это для вас.

Еще раз спасибо.

0 голосов
/ 07 апреля 2020

Объяснение того, почему ваш код не работал: обратите внимание, что df[df['state'] == x]['n_killed'].sum() - это одиночное число с плавающей точкой. Поэтому, когда вы попытаетесь присвоить одно значение с плавающей точкой столбцу Deaths['Total Deaths'], он добавит в этот столбец список с тем же номером с плавающей запятой. Поскольку вы реализуете его в для l oop, из-за обновления будет назначен только последний state.

Простое исправление может быть:

for x in States:
    Deaths.loc[x,'Total Deaths'] = df[df['state'] == x]['n_killed'].sum()

В качестве альтернативы, если вы Если вы хотите использовать groupby, вы можете сначала выбрать те состояния, которые вас интересуют:

df = df[df['state'].isin(States)] 

И сумма по 'n_killed', сгруппированная по 'state'

df1=df.groupby('state').agg({'n_killed':'sum'})

И затем объединили его с вашим фреймом данных Deaths

Deaths=Deaths.merge(df1,left_on='States',right_on=df1.index)

Поскольку у меня нет доступа к вашим данным, проверить правильность невозможно. Пожалуйста, измените коды при необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...