从每个独特的df.Rate.unique()我想选择df.ID=A12加上下面的行。这是我的 df。d = {'ID':['A13', 'A13', 'A12', 'A12','A14', 'A14','A11', 'A12', 'A16', 'A17', 'A12', 'A12'], 'A':[1.1,1.4,1.2, 1.6, 1.1, 1.8,1.1, 1.0, 1.9, 2.2, 3.2, 1.4], 'B':[2.4,2.3,2.7, 1.8, 7.5, 3.5,2.7, 2.3, 2.5, 5.4, 1.4, 9.4], 'Rate':[0.215333,0.215333,0.215333,0.215333,0.822504,0.822504,0.822504,0.822504,1.538575,1.538575,1.538575,1.538575]}df = pd.DataFrame(data=d)df1 = df[df.ID.str.contains('A12')==True] 但我希望将前一个 ID 的最后一行包含在 df1 中。期望输出 A B ID0 1.4 2.3 A131 1.2 2.7 A122 1.6 1.8 A123 1.1 2.7 A114 1.0 2.3 A125 2.2 5.4 A176 3.2 1.4 A127 1.4 9.4 A12
1 回答

吃鸡游戏
TA贡献1829条经验 获得超7个赞
使用boolean indexingwith groupbyby Serieswith shift,用按位OR( |)替换缺失值和原始掩码链:
mask = df.ID.str.contains('A12')
df = df[mask.groupby(df['Rate']).shift(-1).fillna(False) | mask]
print (df)
ID A B Rate
1 A13 1.4 2.3 0.215333
2 A12 1.2 2.7 0.215333
3 A12 1.6 1.8 0.215333
6 A11 1.1 2.7 0.822504
7 A12 1.0 2.3 0.822504
9 A17 2.2 5.4 1.538575
10 A12 3.2 1.4 1.538575
11 A12 1.4 9.4 1.538575
添加回答
举报
0/150
提交
取消