sev*_*ian 12 python duplicates dataframe pandas
我的一些数据看起来像:
date, name, value1, value2, value3, value4
1/1/2001,ABC,1,1,,
1/1/2001,ABC,,,2,
1/1/2001,ABC,,,,35
我试图达到可以运行的程度
data.set_index(['date', 'name'])
但是,随着数据的原样,当然有重复(如上所示),所以我不能这样做(我不希望索引有重复,我不能简单地drop_duplicates(),因为这会丢失数据).
我希望能够将具有相同[日期,名称]值的行强制为单个行,如果它们可以基于某些值NaN成功收敛(类似于combine_first()的行为).例如,上述内容将最终结束
date, name, value1, value2, value3, value4
1/1/2001,ABC,1,1,2,35
如果两个值不同且一个不是NaN,那么这两行不应该收敛(这可能是我需要跟进的错误).
(为了扩展上面的例子,实际上可能有任意数量的行 - 给定任意数量的列 - 应该能够汇聚成一行.)
这感觉就像是一个应该通过熊猫解决的问题,但我无法找到一个优雅的解决方案.
Jef*_*ner 12
让我们假设你有一些函数combine_it,给定一组具有重复值的行,返回一行.首先,按组date和name:
grouped = data.groupby(['date', 'name'])
然后只需应用聚合功能并繁荣完成:
result = grouped.agg(combine_it)
您还可以通过传递aggdict 为不同的列提供不同的聚合函数.