2017-02-05 2 views
1

Пусть мы имеем панд dataframe со структурой: Id | number |seq| a | 1 | X | a | 3 | Z | b | 1 | P | b | 6 | G | b | 5 | C | Панды - Эффективно Concat строк на основе группы и столбца значений

и желаемого результата является dataframe, который выглядит следующим образом: Id |new_seq| a | XZ | b | PCG |

То есть, new_seq столбец seq сгруппированы по Id и следуют порядку, указанному в колонке number.

Каковы варианты эффективного осуществления этой операции?

ответ

3

Вы можете использовать sort_values с groupby и applyjoin:

print (df.sort_values(['Id', 'number'])) 
    Id number seq 
0 a  1 X 
1 a  3 Z 
2 b  1 P 
4 b  5 C 
3 b  6 G 

df = df.sort_values(['Id', 'number']) 
     .groupby('Id', sort=False).seq 
     .apply(''.join) 
     .reset_index(name='new_seq') 

print (df) 
    Id new_seq 
0 a  XZ 
1 b  PCG 
+0

Прекрасно работает, спасибо. – lpounng