我有带换行符的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来完成,但是我不知道如何进行。我该怎么办?
谢谢
范围
答案 0 :(得分:1)
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