我的一些数据如下所示:
日期、名称、值1、值2、值3、值4
2001年1月1日,美国广播公司,1,1,,
2001年1月1日,美国广播公司,
2001年1月1日,美国广播公司,35
我正在努力达到我可以跑步的程度
数据。设置索引(['date','name'])
但是,在数据保持不变的情况下,当然会有重复项(如上图所示),所以我不能这样做(我不希望索引中有重复项,也不能简单地删除_duplicates(),因为这样会丢失数据)
我希望能够将具有相同[date,name]值的行强制为一行,前提是它们可以基于特定的NaN值成功聚合(类似于combine_first()的行为)。例如,上述内容将以
日期、名称、值1、值2、值3、值4
2001年1月1日,美国广播公司,1,1,2,35
如果两个值不同,而其中一个值不是NaN,则两行不应聚合(这可能是一个错误,我需要跟进)
(为了扩展上述示例,事实上可能有任意数量的行——给定任意数量的列——它们应该能够聚合为一行。)
这感觉像是一个应该通过熊猫解决的问题,但我很难找到一个优雅的解决方案
假设您有一个函数combine\u it,给定一组具有重复值的行,该函数返回一行。首先,按日期和姓名分组:
grouped=data.groupby(['date','name'])
然后,只需应用聚合函数,然后弹出即可:
result=grouped.agg(合并它)
您还可以通过传递dict为不同的列提供不同的聚合函数