【发布时间】:2017-04-22 01:34:08
【问题描述】:
由于难以解释的原因,我想对一个稀疏地填充随机值的 pandas 数据帧中的单元块块进行平均。数据框将始终具有 sqrt(列数 x 索引数)值——其余的都是 NaN。这些值大致均匀分布,因此如果我平均大小合适的单元格块,我希望每个块中有一个值。
这是我的例子。对于 100 列和 100 个索引,我有 100 个值随机分布在整个数据框中。我希望每个 10x10 块有 ~1 个值,所有其他值都是 NaN。如何将每个 10x10 块变成一个单元格(平均其中的 10 列、10 个索引和值?
我的代码:
import pandas as pd
import numpy as np
import math
number_of_planes = 100
thicknesses = np.empty(number_of_planes)
cos_thetas = np.empty(number_of_planes)
phis = np.empty(number_of_planes)
for i in range(0,number_of_planes):
r = 1
phi = np.random.uniform(0,2*math.pi)
theta = math.acos(2*np.random.uniform(0.5,1) - 1)
thickness = np.random.uniform(0,0.4)
phis[i] = phi
cos_thetas[i] = math.cos(theta)
thicknesses[i] = thickness
thick_df = pd.DataFrame(columns=phis, index=cos_thetas)
for i in range(0, len(thicknesses)):
thick_df.set_value(cos_thetas[i], phis[i], thicknesses[i], takeable=False)
thick_df = thick_df.sort_index(axis=0, ascending=False)
thick_df = thick_df.sort_index(axis=1)
【问题讨论】:
标签: python pandas numpy dataframe average