熊猫在数据框中的均值

时间:2018-10-08 18:43:53

标签: python pandas

我有一个Pandas DataFrame,它的列包含列表。我正在尝试获取此列中列表的含义。

以下是我的DataFrame外观的示例:

    Loc         Background
0   115227854   [0.000120481927711]
1   115227854   [0.000129117642312, 0.000131429072111, 0.00016...
2   115227855   [0.000123193166886]
3   115227855   [0.000142845482001, 0.000184789750329, 0.00018...
4   115227856   [0.000173490631506]

我想做这样的事情来设置一个新的Mean列,使其等于Background列中每个列表中数据的平均值:

sig_vars['Mean'] = sig_vars['Background'].mean()

如果需要,这是DataFrame:

df = {'Background': {0: [0.00012048192771084337],
  1: [0.00012911764231185137,
   0.0001314290721107509,
   0.000163015792154865,
   0.00018832391713747646,
   0.00019627513412134165,
   0.00020383723596708027,
   0.0002114408734430263,
   0.00022564565426983117,
   0.000247843759294141],
  2: [0.00012319316688567673],
  3: [0.00014284548200146926,
   0.00018478975032851512,
   0.00018864365214110544,
   0.00019392685725367248,
   0.00022931689046296532,
   0.00023965141612200435,
   0.00036566589684372596,
   0.00043096760847454704,
   0.0004584752423369138],
  4: [0.00017349063150589867]},
 'Loc': {0: 115227854, 1: 115227854, 2: 115227855, 3: 115227855, 4: 115227856}}

4 个答案:

答案 0 :(得分:1)

使用tolist重新创建数据框

pd.DataFrame(sig_vars['Background'].values.tolist()).mean(1)
Out[498]: 
0    0.000120
1    0.000189
2    0.000123
3    0.000270
4    0.000173
dtype: float64

#sig_vars['Mean'] = pd.DataFrame(sig_vars['Background'].values.tolist()).mean(1)

答案 1 :(得分:1)

使用还可以使用np.mean实现相同的目的:

import numpy as np
np.mean(df['Background'].tolist(), axis=1)

答案 2 :(得分:1)

列表理解将每个列表转换为数组

df['Mean'] = [np.array(x).mean() for x in df.Background.values]

答案 3 :(得分:1)

这就是我能想到的。

  1. 遍历特定列并将其均值存储在DataFrame中。

    df = pandas.DataFrame(sig_vars.iloc[i]['background'].mean() for i in range(len(sig_vars)),columns=['mean'])
    
  2. 将列与主数据框连接起来。

    sig_vars = sig_vars.join(df)