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