繁体   English   中英

熊猫按两列分组,并从第三列输出值

[英]Pandas groupby two columns and output values from 3rd column

colour    num    accepted  returned
grey      1      yes       no
red       2      no        no
grey      4      yes       yes

我具有上述数据帧和要输出的独特组合colournum列以及在对应的值returned ,如以下

colour    num     returned
grey      1       no    
red       2       no      
grey      4       yes     

使用df.groupby(['colour', 'num']).size()给我唯一的组合,但没有returned列。

如果您确定color和num的组合是唯一的,则可以执行以下操作:

df.groupby(['colour', 'num'])['returned'].max()

当然,如果它不是唯一的,并且同时存在“是”和“否”,则将返回“是”,因为“是”>“否” ...

但是实际上,此解决方案除了df[['colour','num','returned']].drop_duplicates() ,没有其他任何东西,它肯定更精简。

如果您以某种方式知道行可以重复, 但是返回的值是唯一的,并且同时希望它出现的次数和“ returned”中的唯一值,则可以一次性完成:

df.groupby(['colour','num'])['returned'].agg(['size','max'])

哪个会返回:

            size    max
colour  num     
grey    1   1       no
        4   1       yes
red     2   1       no

根据您的描述,我认为您也应该对returned列进行分组。

df.groupby(['colour','num','returned']).size()这将显示每个返回状态的出现次数,按numcolour分组:

colour  num  returned
grey    1    no          1
        4    yes         1
red     2    no          1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM