我有一个数据框,每个唯一的组有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 16 24 NaN
2018-02-11 14:00:00 2 a 5 NaN 15 13
因此,例如,我需要分组(' id',' el',' conn')并找到column1,column3和column2的总和。 (在实际情况下,我需要执行更多的列聚合)。 我尝试了几种方法:.sum(),. transns(' sum'),但是对于具有所有NaN值的组,我返回零。
期望的输出:
void createIndexFile(char fname[])
{
int i=0;
char tempFile[40];
char indexFile[40];
printf("\n%s",fname);
strcpy(indexFile,"");
while(fname[i]!='.')
{
if(fname[i]=='/')
tempFile[i]='_';
else
tempFile[i]=fname[i];
i++;
}
tempFile[i]='\0';
strcat(tempFile,".idx");
strcat(indexFile,tempFile);
printf("\nIndex File Name: %s",indexFile);
}
欢迎任何帮助。
答案 0 :(得分:4)
将参数min_count
更改为1
- 这在last pandas version 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
答案 1 :(得分:0)
我认为它应该是这样的。
df.groupby(['time','id','el','conn']).sum()
Python 2中的输出:
对于groupby的一些小教程我觉得这些情况很有趣: