为了账号安全,请及时绑定邮箱和手机立即绑定

将相邻行附加到 Pandas 中的选定行

将相邻行附加到 Pandas 中的选定行

达令说 2021-07-08 14:11:03
从每个独特的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



查看完整回答
反对 回复 2021-07-13
  • 1 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信