【发布时间】:2019-08-24 21:00:27
【问题描述】:
如果我在 Python 中有一个 pandas DataFrame,如下所示:
import numpy as np
import pandas as pd
a = np.random.uniform(0,10,20)
b = np.random.uniform(0,1,20)
data = np.vstack([a,b]).T
df = pd.DataFrame(data)
df.columns = ['A','B']
df.sort_values(by=['A'])
A B
5 0.057519 0.465408
14 1.610972 0.398077
3 1.725556 0.397708
17 1.734124 0.600723
11 1.944105 0.694152
19 3.265799 0.878538
13 3.352460 0.770505
10 3.865299 0.064723
16 4.137863 0.659662
12 5.597172 0.122269
7 5.990105 0.667533
6 6.410582 0.193027
9 6.881429 0.041691
15 7.522877 0.268144
1 8.093155 0.130559
0 8.699004 0.996624
8 8.755095 0.495984
4 9.135271 0.792966
18 9.440045 0.477514
2 9.654226 0.509812
是否可以有效地计算列B 列A 的间隔中的值的平均值?
例如,您可能想要计算列B 中的值的平均值,这些值属于A 列的bin 范围[0,1,2,3,4,5,6,7,8,9,10]。因此,对于 bin 范围 A = {0-1},落在该 bin 内的 B 值的平均值将是 0.465408,对于 bin 范围 A = {1-2},落在该 bin 内的 B 值的平均值将是 0.522665,等等。
我找到了pandas.core.window.Rolling.mean(请参阅https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.core.window.Rolling.mean.html),但它似乎是在指定长度的窗口上计算平均值,而不是在另一列的 bin 宽度上计算平均值。
【问题讨论】:
标签: python pandas dataframe mean binning