Панды: преобразование фрейма данных - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть pandas dataframe, который выглядит следующим образом: Current Pandas Dataframe

print (df)
   customerid acc_type  amount premium_member
0           1  Savings     200              N
1           1  Current     300              Y
2           2  Savings     250              N

Я хочу преобразовать его в нижний фрейм данных, который преобразует acc_type и сумму в 2 и 2 столбца.,(Отбрасываю оригинальные).

Кроме того, при максимальном уровне уверенности в том, что любой клиент не может иметь более двух строк в исходном кадре данных, где типом счета является сберегательный / текущий (не любое другое значение).

Атрибут Premium_member вычисляется путем взятияЛогическое ИЛИ логических (Y и N) значений.

Transformed data frame

1 Ответ

0 голосов
/ 24 февраля 2019

Использование:

#filter only 2 rows per customerid
df = df[df.groupby('customerid')['acc_type'].transform('size') < 3]
#new column
df['is'] = 1
#reshape and replace missing values to 0
df1 = df.set_index(['customerid','acc_type']).unstack(fill_value=0)
#check if Y in premium_member
s = df1.pop('premium_member').eq('Y').any(axis=1)
#change order of columns
df1 = df1.sort_index(axis=1, ascending=False)
#flatten MultiIndex
df1.columns = df1.columns.map(''.join)
#new column
df1['premium_member'] = np.where(s, 'Y','N')
#convert index to column
df1 = df1.reset_index().rename_axis(None, axis=1)
print (df1)
   customerid  isSavings  isCurrent  amountSavings  amountCurrent  \
0           1          1          1            200            300   
1           2          1          0            250              0   

  premium_member  
0              Y  
1              N  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...