Панды: как группировать, используя строку, используя строку - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть csv-файл с разделителями новой строки, который я читаю в pandas dataframe.

 df = pd.dataframe("data.csv", delimiter="\n", header=None)

Это возвращает что-то вроде этого

 marker1
 10
 20
 30
 marker2
 40
 50
 marker3
 60
 70
 80
 90
 100
 .....

Я хочу сгенерировать кадр данных следующим образом

 marker1 10
 marker1 20
 marker1 30
 marker2 40
 marker2 50
 marker3 60
 marker3 70
 marker3 80
 marker3 90
 marker3 100

Я думаю, что это можно сделать с помощью группы, но я не знаю, как поступить.Как я могу это сделать?

Спасибо

Ранга

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Используя contains и присваиваем эти ячейки, содержащие маркер другим столбцам, тогда мы делаем ffill и выбираем col, не равное New col

df['New']=df.loc[df.col.str.contains('marker'),'col']
df.New=df.New.ffill()
df=df.query('New!=col')
df
    col      New
1    10  marker1
2    20  marker1
3    30  marker1
5    40  marker2
6    50  marker2
8    60  marker3
9    70  marker3
10   80  marker3
11   90  marker3
12  100  marker3
0 голосов
/ 11 февраля 2019

Использование isnumeric() и ffill().

cond = ~df['col'].str.isnumeric()
df.loc[:, 'new_col'] = df.loc[cond, 'col']

df.ffill()[['new_col', 'col']].loc[cond[~cond].index]

    new_col col
1   marker1 10
2   marker1 20
3   marker1 30
5   marker2 40
6   marker2 50
8   marker3 60
9   marker3 70
10  marker3 80
11  marker3 90
12  marker3 100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...