Как объединить несколько строк в одну строку на основе столбца с определенным значением в Pandas - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть DataFrame следующим образом:

item_id    revenue    month    year
1          10.0       01       2014
1          5.0        02       2013
1          6.0        04       2013
1          7.0        03       2013
2          2.0        01       2013
2          3.0        03       2013
3          5.0        04       2013

И я пытаюсь получить доход от каждого элемента с января по март 2013 года, как следующий DataFrame:

item_it    revenue    year
1          12.0       2013
2          5.0        2013
3          0          2013

НО,Я запутался, как реализовать это в Пандах.Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Вы можете нарезать сначала , затем groupby и reindex, чтобы включить 0 значения.

month_start, month_end = 1, 3
year = 2013

res = df.loc[df['month'].between(month_start, month_end) & df['year'].eq(year)]\
        .groupby('item_id')['revenue'].sum()\
        .reindex(df['item_id'].unique()).fillna(0)\
        .reset_index('revenue').assign(year=year)

print(res)

   item_id  revenue  year
0        1     12.0  2013
1        2      5.0  2013
2        3      0.0  2013
0 голосов
/ 16 ноября 2018

Вы можете использовать groupby сначала, затем sum метод, чтобы получить желаемый результат.

df.groupby(['year', 'item_id']).sum().reset_index().drop('month', axis=1).set_index('item_id')

         year  revenue
item_id               
1        2013     18.0
2        2013      5.0
3        2013      5.0
1        2014     10.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...