Python 3.x 我想将数据框中的行放在第1列上

Python 3.x 我想将数据框中的行放在第1列上,python-3.x,pandas,Python 3.x,Pandas,输出 Column1. Column2 Start1 633 End. 855 Start2. 767 Start3. 231 End. 545 Start4. 111 Start5

输出

Column1.          Column2

Start1                   633

End.                       855

Start2.                     767

Start3.                      231

End.                           545

Start4.                      111

Start5                       243

End.                           333

在第1列Start2行中,由于其结尾与start4不同,因此可以使用
cumsum
和groupby,如下所示:

Column1.          Column2

Start1                   633

End.                       855

Start3.                      231

End.                           545

Start5                       243

End.                           333
输入数据帧:

df = pd.DataFrame({'Column1':['Start1','End.','Start2','Start3','End.','Start4','Start5','End.'],
                   'Column2':[633,855,767,231,545,111,243,333]})
使用cumsum和groupby:

  Column1  Column2
0  Start1      633
1    End.      855
2  Start2      767
3  Start3      231
4    End.      545
5  Start4      111
6  Start5      243
7    End.      333
输出:

df[df.groupby((df['Column1'] != 'End.').cumsum())['Column1'].transform('count') == 2]

这比前面的答案要长,但我相信这更容易理解:

[1]中的

作为pd进口熊猫
##创建数据帧
cols=['Column1','Column2']
数据=['Start1',633],'End',855],'Start2',767],'Start3',231],
[End',545],“Start4',111],“Start5',243],“End',333]]
df=pd.DataFrame(数据=数据,列=列)
df
出[1]:
第1栏第2栏
0 START1633
1完855
2 START2767
3 START3231
4完545
5标准4 111
6 Start5 243
7完333
在这里,我对行进行循环,如果后面的行也包含
Start
我将删除该行

[2]中的

idx=df.index.tolist()
droped_idx=[]
对于idx中的i[:-1]:
row=df.iloc[i,0]
下一行=df.iloc[i+1,0]
如果((第行中的“开始”)和(下一行中的“开始”):
droped_idx.append(i)
df.drop(索引=droped_idx,inplace=True)
df
出[2]:
第1栏第2栏
0 START1633
1完855
3 START3231
4完545
6 Start5 243
7完333
  Column1  Column2
0  Start1      633
1    End.      855
3  Start3      231
4    End.      545
6  Start5      243
7    End.      333