当一个项目不同时,Pandas标志

2024-05-13 19:39:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据帧:

date,         item,         value
2015-01-20    abc            1
2015-01-20    xyz           -1
2015-01-20    fgh            1
2015-01-20    iop           -1
2015-01-21    abc            1
2015-01-21    xyz            1
2015-01-21    fgh           -1
2015-01-21    iop            1

我需要检查每一天并标记一个项目,如果它是当天唯一一个与其他项目有不同价值的项目。它们可以有任何值,关键是确定每天只有一个项目与其他项目不同。在

例如,在2015-01-20中,两个项目的值为1,两个项目的值为-1,因此没有要标记的内容。但是在2015-01-21,只有一个项目的值为-1,而其他项目的值为1,因此我需要标记项目“fgh”。在

因此,上述结果将是:

^{pr2}$

我不知道熊猫体内有什么东西可以做这个?如果没有,有没有一个相当优雅的方法来实现这一点。在

编辑

为了简化,我可以确保value列要么是正的,要么是负的,这意味着我只需要确定一个值是正值,而其他值是负的,反之亦然。在


Tags: 数据项目方法标记内容datevalueitem
1条回答
网友
1楼 · 发布于 2024-05-13 19:39:28

您可以分两步完成:

首先使用groupby来获得所需的聚合函数,在本例中,每个日期和值对应一个标志:

singleton_values = (df.groupby(['date,','value'])['item,'].count()==1)
singleton_values = singleton_values.reset_index()
singleton_values.rename(columns = {'item,':'flag'}, inplace= True)        
singleton_values

        date,  value   flag
0  2015-01-20     -1  False
1  2015-01-20      1  False
2  2015-01-21     -1   True
3  2015-01-21      1  False

然后合并回原始数据帧,以便针对每行显示聚合:

^{pr2}$

相关问题 更多 >