Python 数据帧中的特定列的平均值和模式
我有一个大的数据框,沿着下面的一行,我希望计算特定列的平均值或模式。我希望通过一个功能(无论是打开还是关闭)和一个ID列(1或2)来分组 我可以分别完成这两项任务,以找到特定列的平均值和模式,但我不知道如何将两个输出连接在一起,但我还想知道是否有一种方法可以在一次点击中计算所选列的平均值或模式 在我目前的方法中,虽然我能够分别完成这两项任务,但我很难将这两项输出连接在一起 这是我的单独方法Python 数据帧中的特定列的平均值和模式,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个大的数据框,沿着下面的一行,我希望计算特定列的平均值或模式。我希望通过一个功能(无论是打开还是关闭)和一个ID列(1或2)来分组 我可以分别完成这两项任务,以找到特定列的平均值和模式,但我不知道如何将两个输出连接在一起,但我还想知道是否有一种方法可以在一次点击中计算所选列的平均值或模式 在我目前的方法中,虽然我能够分别完成这两项任务,但我很难将这两项输出连接在一起 这是我的单独方法 #as mode is not an official function in Pandas, set o
#as mode is not an official function in Pandas, set out method here
from scipy.stats.mstats import mode
f = lambda x: mode(x, axis=None)[0]
means = MY_DF.groupby(['Feature','ID'])[ITEM1,ITEM3].mean()
moder = MY_DF.groupby(['Feature','ID'])[ITEM2].apply(f)
我的平均方法输出如下:
ITEM1 ITEM3
ON 1 1.93 37.8
2 8.32 15.5
OFF 1 2.55 23.4
2 3.55 32.4
ITEM2
ON 1 [544]
2 [674]
OFF 1 [544]
2 [674]
我的mode方法输出如下内容:
ITEM1 ITEM3
ON 1 1.93 37.8
2 8.32 15.5
OFF 1 2.55 23.4
2 3.55 32.4
ITEM2
ON 1 [544]
2 [674]
OFF 1 [544]
2 [674]
我在寻找一个最终的输出像这样的东西,如果可能的话
ITEM1 ITEM3 ITEM2
ON 1 1.93 37.8 544
2 8.32 15.5 674
OFF 1 2.55 23.4 544
2 3.55 32.4 674
你可以。键引用数据帧的列,值指定聚合函数。比如说,
import pandas as pd
import scipy.stats.mstats as mstats
def mode(x):
return mstats.mode(x, axis=None)[0]
df = pd.DataFrame({'Feature': ['ON', 'OFF', 'ON', 'ON', 'OFF'],
'ID': [1, 1, 2, 1, 2],
'ITEM1': [2.3, 2.55, 8.32, 1.56, 3.55],
'ITEM2': [544, 544, 674, 544, 674],
'ITEM3': [32.2, 23.4, 15.5, 43.4, 32.4],})
df.groupby(['Feature','ID']).agg({'ITEM1':'mean','ITEM3':'mean','ITEM2':mode})
print(df)
屈服
Feature ID ITEM1 ITEM2 ITEM3
0 ON 1 2.30 544 32.2
1 OFF 1 2.55 544 23.4
2 ON 2 8.32 674 15.5
3 ON 1 1.56 544 43.4
4 OFF 2 3.55 674 32.4
太棒了,谢谢你,这很好用。我的另一个问题是如何确保输出中的任何平均值都限制在小数点后2位?您可以使用
pd.options.display.float_format='{.2f}'。format
控制打印数据帧时如何显示浮动。如果只需要控制某些列的显示,请参见