Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.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_Dataframe - Fatal编程技术网

Python 基于行和列条件保留数据帧的行

Python 基于行和列条件保留数据帧的行,python,pandas,dataframe,Python,Pandas,Dataframe,您好,我有一个熊猫数据框要清理。下面是一个示例: 伊比尔 买主 账单 日期 001 768787 45 1897-07-24 001 768787 67 1897-07-24 001 768787 98 1897-07-24 002 768787 30 1897-07-24 002 768787 15 1897-07-24 002 768787 12 1897-07-24 005 786545 45 1897-08-19 008 657676 89 1989-09-23 009 657676 4

您好,我有一个熊猫数据框要清理。下面是一个示例:

伊比尔 买主 账单 日期 001 768787 45 1897-07-24 001 768787 67 1897-07-24 001 768787 98 1897-07-24 002 768787 30 1897-07-24 002 768787 15 1897-07-24 002 768787 12 1897-07-24 005 786545 45 1897-08-19 008 657676 89 1989-09-23 009 657676 42 1989-09-23 010 657676 18 1989-09-23 012 657676 51 1990-03-10 016 892354 73 1990-03-10 018 892354 48 1765-02-14 020 892354 62 1765-02-14 一个解决方案:

df = df.sort_values('BILL')
df.loc[df.assign(cc = df.groupby(['DATE','IDBUYER',df.groupby(['DATE','IDBUYER'])['IDBILL'].transform(lambda x: x.diff().gt(1).cumsum())]).cumcount(),cc2 = df.groupby(['DATE','IDBUYER','IDBILL']).transform('count'),floor = lambda x: ~(x['cc'].floordiv(x['cc2'],axis=0).astype(bool)))['floor']].sort_index()

为什么不删除最后一行?因为020不在018之后,要删除它,它应该是019。当你说“删除最高的票据”时,你是指按IDBILL汇总并删除较高的金额吗?因此,如果IDBILL 002的每张账单都有100张,那么它就会被删除,而001会保留?例如,对于001,您将3张账单中最低的一张与3张002中最低的一张进行比较。如果002的每一张账单上都有100张,那么三张002s就会被删除,而三张001s就会保留下来。