以下DataFrame(df)有3列:Event
,Counts
和Length
,其中Counts
列包含一系列数字。我想估计每个Counts
行的平均值,并将其显示在第四行。
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
列包含多个元素。
感谢您帮助解决这个显而易见的问题。
答案 0 :(得分:2)
你可以使用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
答案 1 :(得分:2)
这是一种利用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