Python Pandas groupby并将不同的列求和在一起

Python Pandas groupby并将不同的列求和在一起,python,pandas,Python,Pandas,我把这个数据框称为sum_2 我希望能够同时取(total\u tom+total\u tomo\u CalR+total\u CalR)的平均值,同时忽略NaN值,并按Time、Type\u鼠标和鼠标进行分组,因为我不想要不同的时间s、Type\u鼠标,和鼠标编号值相互相加 理想情况下,我想要的输出是(126.0+91.0+53.0)/3=90(90是所有值相加的平均值) 我相信pandas在使用.sum()和.mean()时会自动忽略NaN值(如果我错了,请纠正我) 您可以在groupby之

我把这个数据框称为
sum_2

我希望能够同时取(
total\u tom
+
total\u tomo\u CalR
+
total\u CalR
)的平均值,同时忽略NaN值,并按
Time
Type\u鼠标
鼠标
进行分组,因为我不想要不同的
时间
s、
Type\u鼠标
,和
鼠标编号
值相互相加

理想情况下,我想要的输出是(126.0+91.0+53.0)/3=90(90是所有值相加的平均值)

我相信
pandas
在使用
.sum()
.mean()
时会自动忽略NaN值(如果我错了,请纠正我)

您可以在groupby之后使用agg()函数。 In-pass列名和要在键值对ex中执行的函数:

df1=df.groupby([some columns]).agg({'coulmn_name_to_agg':'sum/mean/count','another_column':'sum/mean/count'})
链接到agg文档


您可以使用
.groupby
.transform
将要添加的列添加到一起

sum_2['new_col'] = sum_2.groupby(['Time','Type_of_mouse', 'Mouse_number'])['total_tom'].transform(mean) + sum_2.groupby(['Time','Type_of_mouse', 'Mouse_number'])['total_Tomato_CalR'].transform(mean) + sum_2.groupby(['Time','Type_of_mouse', 'Mouse_number'])['total_CalR'].transform(mean)
这也可能是一个更简洁的版本:

gb = sum_2.groupby(['Time','Type_of_mouse', 'Mouse_number'])
sum_2['new_col'] = gb.total_tom.transform(mean) + gb.total_Tomato_CalR.transform(mean) + gb.total_CalR.transform(mean)
IIUC,你需要:

grp = sum_df.groupby(['Time', 'Type_of_mouse'])
grp.sum().sum(axis=1) / grp.count().sum(axis=1)
输出:

Time      Type_of_mouse
15w pTam  FF                90.00
          WT               138.00
2w pTam   FF               109.20
          WT               128.00
8m pTam   FF               115.50
          WT               176.75
dtype: float64

请不要张贴图片。看一看。也许我的措辞令人困惑或完全错误,但我已将我的问题编辑为包括(126.0+91.0+53.0)/3,即括号中的“total_tom”、“total_Tomo_CalR”和“total_CalR”的值。我之所以添加此评论,是因为我认为您理解我的问题是说我想要这些列的平均值。您能否以可复制和粘贴的格式提供上述示例数据?请看这里:刚刚发布。让我知道我是否应该提供更多的例子或信息。非常感谢!这就是我需要的。
Time      Type_of_mouse
15w pTam  FF                90.00
          WT               138.00
2w pTam   FF               109.20
          WT               128.00
8m pTam   FF               115.50
          WT               176.75
dtype: float64