Pandas:如何使用字符串分组使用字符串

2024-04-25 17:34:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有新行分隔符的csv文件,我读入了一个数据帧。你知道吗

 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完成,但我不知道如何继续。我该怎么做?你知道吗

谢谢

兰加


Tags: 文件csv数据nonedataframedfdataheader
2条回答

使用contains并将那些cell contain标记赋给另一列,然后执行ffill,并选择col not equal to 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

使用^{}^{}。你知道吗

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

相关问题 更多 >

    热门问题