Python: разделение столбца на два столбца на основе его значения - PullRequest
1 голос
/ 17 октября 2019

Я пытаюсь перейти от моего стартового фрейма данных

My Starting DataFrame

к желаемым результатам

My Desired Results.

Я пытаюсь выполнить групповую разбивку на два столбца (Имя, Месяц), и у меня есть столбец (Категория) со значением «Score1» или «Score2». Я хочу создать два столбца с именами значений из столбца «Категория» и установить для их значений значение, определенное из другого столбца. Я не могу понять, как получить значения из моего столбца «Значение» для заполнения фрейма данных.

Результаты из кросс-таблицы

Results from crosstab

Кадр данных в виде кода

df = pd.DataFrame(columns=['Name', 'Month', 'Category', 'Value'])
df['Name'] = ['Jack','Jack','Sarah','Sarah','Zack']
df['Month'] = ['Jan.','Jan.','Feb.','Feb.','Feb.']
df['Category'] = ['Score1','Score2','Score1','Score2','Score1']
df['Value'] = [1,2,3,4,5]

Спасибо!

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Вы можете использовать Сводная таблица

df.pivot_table(index=['Name', 'Month'],values='Value', columns='Category').rename_axis(None, axis=1).reset_index()

Out[1]: 
    Name Month  Score1  Score2
0   Jack  Jan.     1.0     2.0
1  Sarah  Feb.     3.0     4.0
2   Zack  Feb.     5.0     NaN
0 голосов
/ 17 октября 2019

в одну сторону с groupby и unstack

new_df = (df.groupby(['Name','Month','Category'])
 ['Value'].first().unstack().reset_index())
print(new_df)
Category   Name Month  Score1  Score2
0          Jack  Jan.     1.0     2.0
1         Sarah  Feb.     3.0     4.0
2          Zack  Feb.     5.0     NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...