#python #python-3.x #pandas #dataframe
Вопрос:
текущий фрейм данных
есть ли какой-либо возможный способ преобразовать фрейм данных python Pandas во 2-е упоминание изображения. то, что я пытаюсь сделать, — это взять столбец страны и сгруппировать по значениям продажи и покупки и создать новые два столбца на основе страны.
a=[('uk', 'Balaji B',Decimal('48998'), Decimal('41843')),('uk', 'Balaji B',Decimal('48998'), Decimal('41843')),('uk', 'Balaji B',Decimal('48998'), Decimal('41843')),('uk', 'Balaji B',Decimal('48998'), Decimal('41843')),('uk', 'Balaji B',Decimal('48998'), Decimal('41843')),('uk', 'Balaji B',Decimal('48998'), Decimal('41843')),('uk', 'Balaji B',Decimal('48998'), Decimal('41843')),('india', 'Balaji B',Decimal('48998'), Decimal('41843')),('india', 'Balaji B',Decimal('48998'), Decimal('41843')),('india', 'Balaji B',Decimal('48998'), Decimal('41843')),('india', 'Balaji B',Decimal('48998'), Decimal('41843')),('usa', 'Balaji B',Decimal('48998'), Decimal('41843')),('usa', 'Balaji B',Decimal('48998'), Decimal('41843'))]
pd.DataFrame(a)
Комментарии:
1. Пожалуйста, опубликуйте свои данные в виде кода , а не в виде скриншотов , чтобы мы могли скопировать и вставить их для воспроизведения вашей структуры данных.
2. @not_speshal добавил DF
3. Ошибка имени: имя «Десятичное» не определено
4. пожалуйста, добавьте из десятичной дроби импорт десятичной дроби
Ответ №1:
Попробуйте с pivot_table
:
output = df.pivot_table(["sale", "buy"], "users", "country")
.swaplevel(axis=1)
.sort_values("country", axis=1)
>>> output
country india ... usa
buy sale ... buy sale
users ...
abc 22724826.0 133418510.0 ... NaN NaN
as 34036460.0 538978781.0 ... NaN NaN
ghi 8412213.0 44774045.0 ... NaN NaN
gth 2449408.0 5797027.0 ... NaN NaN
oiuy 23618387.0 188875085.0 ... NaN NaN
qwe 16142525.0 30675496.0 ... 1603671.0 1603671.0
qwer NaN NaN ... 33201345.0 66810216.0
reww NaN NaN ... -10309654.0 415017600.0
sad NaN NaN ... NaN NaN
yu 3191686.0 18612977.0 ... NaN NaN
Вход df:
country users sale buy
0 india abc 133418510.0 22724826.0
1 india def NaN NaN
2 india ghi 44774045.0 8412213.0
3 india hil NaN NaN
4 india as 538978781.0 34036460.0
5 india gth 5797027.0 2449408.0
6 india oiuy 188875085.0 23618387.0
7 india yu 18612977.0 3191686.0
8 india qwe 30675496.0 16142525.0
9 usa qwer 66810216.0 33201345.0
10 usa qwe NaN NaN
11 usa qwe 1603671.0 1603671.0
12 usa reww 415017600.0 -10309654.0
13 uk sad 142834632.0 20545881.0
14 uk asdasd NaN NaN
Комментарии:
1. выглядит многообещающе, спасибо вам большое, попробую.
2. Пожалуйста, обратите внимание, что это НЕ соответствует опубликованным вами выводам. Потому что вы поместили значения для США и Великобритании в столбцы Индия и получили совершенно новые значения в столбцах США и Великобритания, которых не было в ваших входных данных.
3. да, это просто пустышки, у меня целых 26 столбцов, которые я пробовал, excel генерирует нормально.
4. можете ли вы сказать мне, хочу ли я сохранить порядок, как я могу это сделать? в каком-то сценарии мой порядок столбцов портится