Python 数据帧中包含的序列的平均值

Python 数据帧中包含的序列的平均值,python,pandas,dataframe,mean,series,Python,Pandas,Dataframe,Mean,Series,以下数据帧(df)有3列:事件、计数和长度,其中计数列包含一系列数字。我想估计每行计数的平均值并将其显示在第四行上 df = Event Counts Length 0 [111240.0, 110530.0, 108540.0, 108540.0, 10838... 5

以下数据帧(df)有3列:
事件
计数
长度
,其中
计数
列包含一系列数字。我想估计每行
计数的平均值
并将其显示在第四行上

df = 
Event                                                 Counts Length  
0     [111240.0, 110530.0, 108540.0, 108540.0, 10838...       5                                                      
7     [117240.0, 119160.0, 120160.0, 121950.0, 12195...       6
13    [180420.0, 180420.0, 183840.0, 183840.0, 18384...       6
16    [160260.0, 159430.0, 159430.0, 157720.0, 15955...      14
我测试了以下表达式,但没有成功

 df['mean'] = df['counts'].mean(axis = 1) 
以及基于这条线的其他变化

如果我理解正确,问题是由于
Count
列包含多个元素


非常感谢您对这个显然很简单的问题的帮助。

您可以使用Numpy,前提是它们的长度相同

df['Mean'] = np.mean(df['Counts'].tolist(), axis=1)
df

   Event                                           Counts  Length      Mean
0      0  [111240.0, 110530.0, 108540.0, 108540.0, 10838]       5   89937.6
1      7  [117240.0, 119160.0, 120160.0, 121950.0, 12195]       6   98141.0
2     13  [180420.0, 180420.0, 183840.0, 183840.0, 18384]       6  149380.8
3     16  [160260.0, 159430.0, 159430.0, 157720.0, 15955]      14  130559.0
否则

df['Mean'] = df['Counts'].apply(np.mean)
df

   Event                                           Counts  Length      Mean
0      0  [111240.0, 110530.0, 108540.0, 108540.0, 10838]       5   89937.6
1      7  [117240.0, 119160.0, 120160.0, 121950.0, 12195]       6   98141.0
2     13  [180420.0, 180420.0, 183840.0, 183840.0, 18384]       6  149380.8
3     16  [160260.0, 159430.0, 159430.0, 157720.0, 15955]      14  130559.0

以下是一种利用
numpy
阵列性能的方法:

import pandas as pd

df = pd.DataFrame([[[111240.0, 110530.0, 108540.0, 108540.0]],
                   [[117240.0, 119160.0, 120160.0, 121950.0]],
                   [[180420.0, 180420.0, 183840.0, 183840.0]],
                   [[160260.0, 159430.0, 159430.0, 157720.0]]], columns=['Counts'])

df['mean'] = np.mean(np.vstack(df['Counts'].values), axis=1)

#                                      Counts      mean
# 0  [111240.0, 110530.0, 108540.0, 108540.0]  109712.5
# 1  [117240.0, 119160.0, 120160.0, 121950.0]  119627.5
# 2  [180420.0, 180420.0, 183840.0, 183840.0]  182130.0
# 3  [160260.0, 159430.0, 159430.0, 157720.0]  159210.0

试试这个:df['mean']=df.Counts.map(lambda Counts:pd.Series(Counts.mean())您建议的第一个选项给了我这个错误:
索引器:元组索引超出范围
。但第二种选择奏效了。谢谢lot@jp_data_analysis我并不总是试图优化OP的代码。有时(特别是当他们不要求时),我会给他们看起来很直观的东西。@U新手几乎可以肯定,这是因为你在
计数中的列表/数组长度不同,不能放入矩形数组中。这也是我提出第二种解决方案的原因。我很高兴它成功了。非常感谢两种选择。正如我的绰号所暗示的,我是Python/Pandas世界的新手。@the_新手作为新手没有什么丢脸的。你只需看我的第一个问题就知道我曾经和你在一起。显示了以下错误消息:ValueError:除了连接轴之外,所有输入数组维度都必须完全匹配,我猜这是因为每行的长度不同。我想和你分享这个。使用上一篇文章解决了这个问题。无论如何谢谢你!该错误是由于并非计数中的所有列表/数组长度相同。因此,Numpy不能使其成为矩形阵列。相反,它将其转换为一个一维列表数组,该数组在轴=1上运行。也就是说,调用
np.vstack
是不需要的额外开销。对于小数据,这是更有效的
np.mean(df['Counts'].values.tolist(),axis=1)
。从性能的角度来看也是很好的+从我这里得到1。