pandas计算具有列表而不是单个值的列的平均值

时间:2017-11-22 07:10:44

标签: python pandas numpy dataframe

我有一个pandas数据框,它有一列,并且每行都有一个值列表。我需要使用每行的相应值来计算平均值。那就是我需要列表中八个值的均值。列表中的每个元素都是变量的值

>>> df_ex
0    [1, 2, 3, 4, 5, 6, 7, 8]
1    [2, 3, 4, 5, 6, 7, 8, 1]

我尝试将其转换为numpy数组,然后采取措施,但我一直收到错误TypeError: unsupported operand type(s) for /: 'list' and 'int'。我理解,我应该将其转换为列,而不是使用列表,但在我的上下文中将无法实现。关于如何实现这个目标的任何想法?

3 个答案:

答案 0 :(得分:3)

您可以先转换为嵌套列表,然后转换为string,然后计算mean

array

答案 1 :(得分:1)

您可以通过传递嵌套列表并指定轴来调用np.mean

设置

df_ex = pd.DataFrame(dict(
    col1=[[1, 2, 3, 4, 5, 6, 7, 8],
          [2, 3, 4, 5, 6, 7, 8, 1]]))

df_ex

                       col1
0  [1, 2, 3, 4, 5, 6, 7, 8]
1  [2, 3, 4, 5, 6, 7, 8, 1]

解决方案

np.mean(df_ex['col1'].tolist(), axis=1)

array([ 4.5,  4.5])

或者

np.mean(df_ex['col1'].tolist(), axis=0)

array([ 1.5,  2.5,  3.5,  4.5,  5.5,  6.5,  7.5,  4.5])

答案 2 :(得分:0)

最简单的方法:

col.apply(np.mean)