jov*_*cbg 6 python numpy nan dataframe pandas
我有一个数据框,每个唯一的组有4行.所以我需要按列进行分组,使它们成为唯一的,并进行一些聚合,例如max,min,sum和average.但问题是我为某些组提供了所有NaN值(在某些列中)并返回0.是否有可能返回NaN?例如:df
time id el conn column1 column2 column3
2018-02-11 14:00:00 1 a 12 8 5 NaN
2018-02-11 14:00:00 1 a 12 1 NaN NaN
2018-02-11 14:00:00 1 a 12 3 7 NaN
2018-02-11 14:00:00 1 a 12 4 12 NaN
2018-02-11 14:00:00 2 a 5 NaN 5 5
2018-02-11 14:00:00 2 a 5 NaN 3 2
2018-02-11 14:00:00 2 a 5 NaN NaN 6
2018-02-11 14:00:00 2 a 5 NaN 7 NaN
Run Code Online (Sandbox Code Playgroud)
因此,例如,我需要groupby('id','el','conn')并找到column1,column3和column2的和.(在实际情况下,我需要执行更多的列聚合).我尝试了几种方法:.sum(),. transnsform('sum'),但是对于具有所有NaN值的组,我返回零.
期望的输出:
time id el conn column1 column2 column3
2018-02-11 14:00:00 1 a 12 16 24 NaN
2018-02-11 14:00:00 2 a 5 NaN 15 13
Run Code Online (Sandbox Code Playgroud)
欢迎任何帮助.
将参数更改min_count
为1
-可以在最新的熊猫版本中使用0.22.0
:
min_count:int,默认0
执行操作所需的有效值数量。如果存在少于min_count个非NA值,则结果将为NA。
0.22.0版中的新增功能:添加了默认值1。这表示全NA或空序列的总和或乘积为NaN。
df = df.groupby(['time','id', 'el', 'conn'], as_index=False).sum(min_count=1)
print (df)
time id el conn column1 column2 column3
0 2018-02-11 14:00:00 1 a 12 16.0 24.0 NaN
1 2018-02-11 14:00:00 2 a 5 NaN 15.0 13.0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1717 次 |
最近记录: |