2016-11-04 2 views
1

У меня есть кадр данных, как этотPivot dataframe автоматически сделать столбцы

Date Lag 
d1 20 
d1 30 
d1 40 
d2 10 
d2 50 

и хотят преобразовать в что-то вроде этого

Date <column names> 
d1 20 30 40 
d2 10 50 None 

столбцов можно назвать что угодно. любой способ сделать это?

+0

Спасибо за редактирование. Выучил :) –

ответ

1

Я думаю, вам нужно создать новые имена столбцов от cumcount в новую колонку, а затем использовать pivot:

print (df) 
    Date Lag 
0 d1 20 
1 d1 30 
2 d1 40 
3 d2 10 
4 d2 50 

df['g'] = df.groupby('Date')['Lag'].cumcount() 
df = df.pivot(index='Date', columns='g', values='Lag') 
print (df) 
g  0  1  2 
Date     
d1 20.0 30.0 40.0 
d2 10.0 50.0 NaN 

Также вы можете изменить имена столбцов:

df['g'] = 'Col' + df.groupby('Date')['Lag'].cumcount().astype(str) 
print (df) 
    Date Lag  g 
0 d1 20 Col0 
1 d1 30 Col1 
2 d1 40 Col2 
3 d2 10 Col0 
4 d2 50 Col1 

df = df.pivot(index='Date', columns='g', values='Lag') 
print (df) 
g  Col0 Col1 Col2 
Date     
d1 20.0 30.0 40.0 
d2 10.0 50.0 NaN 
+0

работал на прицелистом. благодаря –

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