熊猫:如何使用字符串使用字符串分组

时间:2019-02-10 23:34:08

标签: python pandas pandas-groupby

我有带换行符的csv文件,我已将其读入pandas数据框。

 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

我认为可以使用groupby来完成,但是我不知道如何进行。我该怎么办?

谢谢

范围

2 个答案:

答案 0 :(得分:1)

使用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

答案 1 :(得分:1)

使用contains并将那些包含标记的单元格分配给另一列,然后执行ffill,并选择不等于New col的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