Вопрос:

Как повернуть таблицу в CSV по горизонтали в Python, используя Pandas DF?

python csv pandas dataframe pivot

545 просмотра

1 ответ

443 Репутация автора

У меня есть данные в этом формате -

МесяцГод HPI Div State_fips
1-1993 105,45 7 5
2-1993 105,58 7 5
3-1993 106,23 7 5
4-1993 106,63 7 5

Требуемая сводная таблица как: 

Stafips 1-1993 2-1993 3-1993 4-1993
5 105,45 105,58 106,23 106,63

(довольно плохо знаком с пандами)

Автор: Viv Источник Размещён: 24.03.2017 07:08

Ответы (1)


1 плюс

407852 Репутация автора

Решение

Используйте unstackили pivot:

df1 = df.set_index(['State_fips', 'MonthYear'])['HPI'].unstack()
MonthYear   1-1993  2-1993  3-1993  4-1993
State_fips                                
5           105.45  105.58  106.23  106.63

df1 = df.pivot(index='State_fips', columns='MonthYear', values='HPI')
MonthYear   1-1993  2-1993  3-1993  4-1993
State_fips                                
5           105.45  105.58  106.23  106.63

Но если дубликаты, необходимо агрегат с groupbyили pivot_table, meanможет быть изменено sum, median...:

print (df)
  MonthYear     HPI  Div  State_fips
0    1-1993  105.45    7           5
1    2-1993  105.58    7           5
2    3-1993  106.23    7           5
3    4-1993  100.00    7           5 <-duplicates same 4-1993, 5
4    4-1993  200.00    7           5 <-duplicates same 4-1993, 5

df1 = df.pivot_table(index='State_fips', columns='MonthYear', values='HPI', aggfunc='mean')
MonthYear   1-1993  2-1993  3-1993  4-1993
State_fips                                
5           105.45  105.58  106.23   150.0 <- (100+200/2) = 150

df1 = df.groupby(['State_fips', 'MonthYear'])['HPI'].mean().unstack()
MonthYear   1-1993  2-1993  3-1993  4-1993
State_fips                                
5           105.45  105.58  106.23   150.0 <- (100+200/2) = 150

Последнее, если необходимо создать столбец из индекса и удалить имя столбца:

df1 = df1.reset_index().rename_axis(None, axis=1)
print (df1)
   State_fips  1-1993  2-1993  3-1993  4-1993
0           5  105.45  105.58  106.23   150.0
Автор: jezrael Размещён: 24.03.2017 07:13
Вопросы из категории :
32x32