我正在尝试做一些简单的事情。。。 我有一个dataframe,我试图按一个特定的列进行分组,输出dataframe需要保留一列,并对另外两列求和。 以下是一个例子:
df:
User Col1ToSum Col2ToSum ColToKeep
ABC 10 440 1.015
ABC 15 410 1.015
ABC 15 -200 1.015
ABA 100 110 2.24
ABA 80 -10 2.24
AAA 40 10 nan
AAA 20 10 nan
BBB 10 15 nan
XYZ 10 10 1.1
XYZ 10 10 1.5 (note the 'ColToKeep' is different for user XYZ)
预期产出:
User Col1ToSum Col2ToSum ColToKeep
ABC 45 650 1.015
ABA 180 100 2.24
AAA 60 20 nan
BBB 10 15 nan
XYZ 10 10 1.1
XYZ 10 10 1.5
我试着做:
df.groupby(['User', 'ColToKeep'], as_index=False).mean()
不幸的是,它正在删除ColToKeep为nan且要求和的两列不是sum的任何记录李>df.groupby(['User'], as_index=False)['Col1ToSum', 'Col2ToSum'].sum()
不幸的是,它正在删除输出df中的“ColToKeep”列df.groupby(['User', 'ColToKeep'], as_index=False)['Col1ToSum', 'Col2ToSum'].sum()
但与第1点相同)它正在删除ColToKeep为nan的记录我之所以尝试按用户和coltokep分组,是因为如果用户相同,但coltokep不同,我希望有2条记录
我不知道为什么group by会删除nan值(可能是因为我缺乏与panda合作的经验…)
请您在上述方面提供帮助,或者解释为什么会发生这种情况
熊猫支持来自
1.1
版本link的groupby
中缺少的值第一个想法是创建新的辅助列} 和^{} 聚合,最后按第一个
new
,将缺少的值替换为某些字符串,例如miss
,然后按new
分组,按^{reset_index
删除辅助级别:另一个想法是将
miss
替换回NaN
:将“ColToKeep”更改为字符串,然后使用代码
如有必要,可以通过以下方式将COLTOTKEEP更改回浮动:
相关问题 更多 >
编程相关推荐