Pandas表示和模式DataFrame中的特定列

时间:2015-08-13 10:06:53

标签: python pandas dataframe

我有一个大的DataFrame沿着下面的那一行,我希望计算特定列的均值或模式。我希望通过一个功能(无论是打开还是关闭)以及ID列(1或2)进行分组。

$config['allowed_types'] = 'jpeg|jpg|png'

我可以分别执行两个任务来查找特定列的均值和模式,但我无法弄清楚如何将两个输出连接在一起,但后来我也想知道是否有办法计算均值或一次点击中所选列的模式?

在我目前的方法中,虽然我能够完成这两项任务,但我仍在努力将两个输出加在一起。

这是我的单独方法

MY_DF

        Feature ID  ITEM1   ITEM2   ITEM3
index
1       ON      1   2.3     544     32.2
2       OFF     1   2.55    544     23.4
3       ON      2   8.32    674     15.5
4       ON      1   1.56    544     43.4
5       OFF     2   3.55    674     32.4

我的平均方法输出如下:

#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]   

1 个答案:

答案 0 :(得分:2)

你可以pass a dict to GroupBy.agg。键指的是DataFrame的列,值指定聚合函数。例如,

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