Скажем, у меня есть следующий dataframe:Pivot Панды Dataframe и вычислить параметр «столбцов»
import pandas as pd
df = pd.DataFrame()
df['ID'] = [1, 1, 1, 2, 2]
df['Type'] = ['A', 'B', 'Q', 'B', 'R']
df['Status'] = [0, 0, 1, 0, 1]
>>> df
ID Type Status
0 1 A 0
1 1 B 0
2 1 Q 1
3 2 B 0
4 2 R 1
>>>
Я хочу, чтобы сгруппировать этот dataframe на «ID» и изменить его так, что у меня есть «тип» переменной и Переменная «Статус» для каждого элемента в группе. Смотрите ниже:
Type1 Type2 Type3 Status1 Status2 Status3
ID
1 A B Q 0 0 1
2 B R NaN 0 1 NaN
Число строк в моем выходном dataframe будет зависеть от максимального количества записей в любой одной группе идентификаторов.
Я считаю, что функция pivot - это то, что я хочу использовать здесь. Тем не менее, он вызывает параметр «столбцы», который, я считаю, должен быть идентификатором каждого элемента в каждой группе. У меня есть очень неуклюжий способ вычисления этого, который я ценю советы по лучшему способу сделать это:
>>> g=df.groupby('ID')
>>> df['IDinGroup']=[item for sublist in [range(1,len(i[1])+1) for i in g] for item in sublist]
>>> df
ID Type Status IDinGroup
0 1 A 0 1
1 1 B 0 2
2 1 Q 1 3
3 2 B 0 1
4 2 R 1 2
>>>
Тогда я могу перебрать «Тип» и переменные «Статус» и поворот каждого, а затем объединить их назад вместе:
>>> ListOfValues=[]
>>> for ValueCol in ['Type','Status']:
... f=df.pivot(index='ID',columns='IDinGroup',values=ValueCol)
... f.columns=[ValueCol+str(Col) for Col in f.columns]
... f.columns.name=None
... ListOfValues.append(f)
...
>>> pd.concat(ListOfValues,1)
Type1 Type2 Type3 Status1 Status2 Status3
ID
1 A B Q 0 0 1
2 B R NaN 0 1 NaN
>>>
Я принимаю правильный подход здесь? И если да, то какой способ лучше вычислить параметр «столбцы» для функции поворота? (Идентификатор каждого элемента в каждой группе)
Это замечательно, спасибо. – AJG519