Python 熊猫:放弃值之前的行,包括另一列中的值
我想放弃Python 熊猫:放弃值之前的行,包括另一列中的值,python,pandas,Python,Pandas,我想放弃Timeis0之前的每一行,其中ID与0-值的行相同。包含0的行也应删除 数据如下: Time Author ID Date 2018-04-23 08:09:52.558 60 1744025 44 2018-04-23 14:26:12.294 360 1244021 10 2018-04-23 15:19:47.667 45 1244021 1
Time
is0
之前的每一行,其中ID
与0
-值的行相同。包含0
的行也应删除
数据如下:
Time Author ID
Date
2018-04-23 08:09:52.558 60 1744025 44
2018-04-23 14:26:12.294 360 1244021 10
2018-04-23 15:19:47.667 45 1244021 10
2018-04-23 18:05:25.417 240 1249997 19
2018-04-23 18:58:20.776 180 2185555 19
2018-04-23 18:59:50.883 120 2185555 19
2018-04-23 19:29:30.500 300 1686620 19
2018-04-24 00:23:45.673 0 1249997 19
2018-04-24 06:55:29.529 10 1244021 10
2018-04-24 14:08:19.080 270 1686620 19
2018-04-24 17:58:30.757 120 1416825 39
2018-04-24 19:33:41.127 600 1249997 19
我希望它是:
Time Author ID
Date
2018-04-23 08:09:52.558 60 1744025 44
2018-04-23 14:26:12.294 360 1244021 10
2018-04-23 15:19:47.667 45 1244021 10
2018-04-24 06:55:29.529 10 1244021 10
2018-04-24 14:08:19.080 270 1686620 19
2018-04-24 17:58:30.757 120 1416825 39
2018-04-24 19:33:41.127 600 1249997 19
我摆弄着idxmax()
:
但这并不考虑ID
那么我如何才能以最“pythonic”的方式做到这一点呢?您可以在这里使用
groupby
+cumsum
技巧:
df[~df.Time.eq(0)[::-1].groupby(df.ID, sort=False).cumsum()]
Time Author ID
Date
2018-04-23 08:09:52.558 60 1744025 44
2018-04-23 14:26:12.294 360 1244021 10
2018-04-23 15:19:47.667 45 1244021 10
2018-04-24 06:55:29.529 10 1244021 10
2018-04-24 14:08:19.080 270 1686620 19
2018-04-24 17:58:30.757 120 1416825 39
2018-04-24 19:33:41.127 600 1249997 19
这很有魅力,谢谢!你能用几句话解释一下那里发生了什么吗?@JACKSONMEISTER我要做的是计算出第一行,每组0,然后用cumsum标记前面的每一行以便删除。
df[~df.Time.eq(0)[::-1].groupby(df.ID, sort=False).cumsum()]
Time Author ID
Date
2018-04-23 08:09:52.558 60 1744025 44
2018-04-23 14:26:12.294 360 1244021 10
2018-04-23 15:19:47.667 45 1244021 10
2018-04-24 06:55:29.529 10 1244021 10
2018-04-24 14:08:19.080 270 1686620 19
2018-04-24 17:58:30.757 120 1416825 39
2018-04-24 19:33:41.127 600 1249997 19