Перенести строки в столбец с ограничением специального символа - PullRequest
0 голосов
/ 14 июля 2020

Данные находятся в столбцах, которые необходимо транспонировать (строки) в столбец, с ограничением на специальный символ, например '.' полная остановка. После каждого специального символа, такого как ".", L oop повторяется до тех пор, пока весь столбец не превратится в строку. , поэтому на выходе он выглядит следующим образом.

df:

index ID-0 ID-1 info_string
0 4 20 This
1 6 8 is 
2 8 6 an 
3 12 15 apple
4 29 9.
5 45 5 It
6 56 8 is
7 60 10 sweet
8 62 15 .

output df_out:

index ID-0 ID-1 info_string
0 4 6 8 12 29 20 8 6 15 9 This is an apple.
1 45 56 60 62 5 8 10 15 It is sweet.

также. после этого снова, как вернуть исходное состояние, например ...

df_out_reverse:

index ID-0 ID-1 info_string
0 4 20 This
1 6 8 is 
2 8 6 an 
3 12 15 apple
4 29 9.
5 45 5 It
6 56 8 is
7 60 10 sweet
8 62 15 .

Я пробовал с транспонированием, но не смог остановиться на специальном символе. Переносится полностью.

1 Ответ

1 голос
/ 14 июля 2020

от длинного до широкого

s = df.astype(str).groupby(df['info_string'].iloc[::-1].eq('.').cumsum()).agg(' '.join)
Out[178]: 
                    ID-0         ID-1         info_string
info_string                                              
1            45 56 60 62    5 8 10 15       It is sweet .
2            4 6 8 12 29  20 8 6 15 9  This is an apple .

от широкого до длинного

pd.concat([s[x].str.split().explode() for x in s.columns],axis=1)
Out[184]: 
            ID-0 ID-1 info_string
info_string                      
1             45    5          It
1             56    8          is
1             60   10       sweet
1             62   15           .
2              4   20        This
2              6    8          is
2              8    6          an
2             12   15       apple
2             29    9           .
...