создать новые столбцы из сравнения строк - PullRequest
0 голосов
/ 25 сентября 2018

Мои входные данные выглядят так:

df = pd.DataFrame({'A':[1,2,3,4], 'B':['x','y','x','y'], 'C':['S1','S1','S2','S2']})

    A   B   C
0   1   x   S1
1   2   y   S1
2   3   x   S2
3   4   y   S2

Я хочу сгруппировать 'C'.Затем для 2 строк в группе используйте значение B, чтобы присвоить значение A другому столбцу и уменьшить его до одной строки.

оно должно стать

    C   D_x D_y
0   S1  1   2
1   S2  3   4

В реальных данных большечем сто тысяч строк, но всегда будут сгруппированы в 2 ряда.Будут другие столбцы, но они остаются такими же внутри группы.

спасибо

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Давайте использовать set_index, unstack и переименование и выравнивание столбцов:

dfout = df.set_index(['C','B']).unstack().rename(columns={'A':'D'})
#Python 3.6.0+
dfout.columns = [f'{i}_{j}' for i,j in dfout.columns]
#or
#dfout.columns = dfout.columns.map('_'.join)
print(dfout.reset_index())

Вывод:

    C  D_x  D_y
0  S1    1    2
1  S2    3    4
0 голосов
/ 25 сентября 2018

Что вам нужно больше похоже на pivot

df.pivot('C','B','A')
Out[209]: 
B   x  y
C       
S1  1  2
S2  3  4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...