Python 组合';n';一行一行

Python 组合';n';一行一行,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下数据帧: START NAME 5.11 name1 9.1 name1 10.86 name1 12.61 name2 14.86 name2 23.11 name2 25.36 name1 26.61 name1 28.36 name2 31.61 name2 32.86 name1 35.61 name1 44.61 name1 46.36 name2 我将按名称将其合并如下: START END NA

我有以下数据帧:

START   NAME
5.11    name1
9.1     name1
10.86   name1
12.61   name2
14.86   name2
23.11   name2
25.36   name1
26.61   name1
28.36   name2
31.61   name2
32.86   name1
35.61   name1
44.61   name1
46.36   name2
我将按名称将其合并如下:

START   END     NAME
5.11    12.61   name1
12.61   25.36   name2
26.61   28.36   name1
28.36   32.86   name2
32.86   46.36   name1
46.36   total   name2
我试过这样的方法:

df2 = df.copy()
df2 = df2.rename({"name": "temp"}).reset_index()
grp = (df2['name'] != df2['name'].shift()).cumsum().rename('group')
df2 = df2.groupby(['name', grp], sort=False)
但这并不能产生期望的输出。谢谢你的帮助

谢谢

  • 使用
    shift
    将该行的内容与下一行的内容进行比较
  • 保留与下一行名称不同的名称
  • 使用shift(-1)指定名称的结尾

  • 谢谢,这很有效
    cond = (df['NAME'] != df['NAME'].shift(1))
    dfn = df[cond].copy()
    dfn['END'] = dfn['START'].shift(-1).fillna('total')
    dfn[['START', 'END', 'NAME']]