熊猫:在列中查找特定限制内的值的平均值

时间:2018-03-19 11:23:23

标签: python pandas dataframe data-analysis

我已经在我的python程序中导入名为 Time,Test 1 Test 2 的.csv文件的前三列。

import pandas as pd
fields = ['Time', 'Time 1', 'Time 2']
df=pd.read_csv('file.csv', skipinitialspace=True, usecols=fields)

Here是我在程序中导入的文件。

enter image description here

如何在给定的时间限制内创建一个函数来查找 Test 1 列中值的平均值/平均值?时间限制(起始值和结束值)将作为函数中的参数。

例如,我想找到列测试1 中的值的平均值,从0.50秒到4.88秒。限制(0.50和4.88)将是函数的参数。

2 个答案:

答案 0 :(得分:2)

我认为需要between来填充掩码,按boolean indexing过滤并获取mean

def custom_mean(x,y):
    return df.loc[df['Time'].between(x,y), 'Test 1'].mean()

<强>示例

df = pd.DataFrame({'Time':[0.0, 0.25, 0.5, 0.68, 0.94, 1.25, 1.65, 1.88, 2.05, 2.98, 3.45, 3.99, 4.06, 4.68, 4.88, 5.06, 6.0],
                   'Test 1':np.random.randint(10, size=17)})
print (df)
    Test 1  Time
0        3  0.00
1        6  0.25
2        5  0.50
3        4  0.68
4        8  0.94
5        9  1.25
6        1  1.65
7        7  1.88
8        9  2.05
9        6  2.98
10       8  3.45
11       0  3.99
12       5  4.06
13       0  4.68
14       9  4.88
15       6  5.06
16       2  6.00

def custom_mean(x,y):
    return df.loc[df['Time'].between(x,y), 'Test 1'].mean()

print (custom_mean(0.50, 1.0))
5.666666666666667

#verify
print (df.loc[df['Time'].between(0.50, 1.0), 'Test 1'])
2    5
3    4
4    8
Name: Test 1, dtype: int32

答案 1 :(得分:0)

您可以使用numpy库中的between掩码和meanstd功能。
例如:这行代码将估算Test 1在0.0到5.0之间的平均值:

np.mean(df[df['Time'].between(0.0, 5.0)]['Test 1'])