Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:放弃值之前的行,包括另一列中的值_Python_Pandas - Fatal编程技术网

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
is
0
之前的每一行,其中
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