2015-10-26 3 views
0

Я недавно начал работать с python.pivot_table и столкнулся с проблемой, используя временные метки с помощью сводных таблиц.Как использовать даты timestamp как индекс в сводной таблице в python?

У меня есть большой dataframe с данными, как показано ниже

  Date   ID   Days Quantity  Concern 
0 2012-06-29   NaN   621  NaN   A 
1 2012-06-29  1208985   874   1   A 
2 2012-06-29   NaN   621   2   B 
3 2012-06-29   NaN   874   1   C 
4 2012-06-29   NaN   566  NaN   A 
5 2012-06-29  251254   780  NaN   A 
6 2012-06-29   NaN   566  NaN   C 
7 2012-06-29  385379   566   1   B 
8 2012-06-29  967911   780   1   B 
9 2012-06-29   NaN   521  NaN   A 
10 2012-06-29  1208985   834   1   C 
11 2012-06-29  385379   374  NaN   A 
12 2012-06-29  967909   780   1   B 
13 2012-07-18   NaN   821  NaN   A 
14 2012-07-18  251254   821  NaN   A 
15 2012-08-04  756444   676   1   C 
16 2012-08-04  756444   676   2   C 
17 2012-08-04   NaN   676  NaN   A 
18 2012-08-24   NaN   571  NaN   B 
19 2012-08-24  251254   446   1   B 

линия как ниже отлично работает:

pd.pivot_table(data,index=['Concern'],columns=['ID'],values=['Quantity'],aggfunc='sum') 

В настоящее время, когда я использую столбец Date для index=['Date'] ней групп в день , Я хотел бы иметь возможность группироваться по месяцам или годам. Есть ли способ реализовать это с помощью сводных таблиц, когда столбцом даты являются объекты TimeStamp?

ответ

1

Вы можете получить доступ к информации, как год и месяц через .dt приписывать, что серия DateTime есть, так что вы можете легко создавать новые столбцы, как:

df['Month'] = df['Date'].dt.month 

Затем использовать эти столбцы для создания сводной таблицы:

pd.pivot_table(df, index=['Month'], columns=['ID'], 
       values=['Quantity'],aggfunc='sum') 

Выход:

Out[16]: 
     Quantity           
ID  251254 385379 756444 967909 967911 1208985 
Month             
6   NaN  1  NaN  1  1  2 
7   NaN  NaN  NaN  NaN  NaN  NaN 
8   1  NaN  3  NaN  NaN  NaN 
+0

Спасибо за указателем. Это определенно похоже на возможное решение. Больше из любопытства есть способ реализовать это без создания большего количества столбцов? Как бы реализовать это, чтобы иметь индекс, который сгруппирован по месяцам и годам? – JL1515

Смежные вопросы