我有一个类似于生成的pandas数据帧,如下所示。
import numpy as np
import pandas as pd
x0 = pd.DataFrame(np.random.normal(size=(10, 4)))
x1 = pd.DataFrame({'x': [1,1,2,3,2,3,4,1,2,3]})
df = pd.concat((x0, x1), axis=1)
和一个功能:
def fun(df, n=100):
z = np.random.normal(size=n)
return np.dot(df[[0,1,2,3]], [0.5*z,-1*z,0.3*z,1.2*z])
我想:
z
,x
x
有什么建议吗?
解释:
n=100
绘制以获得z
len(z)=100
elem
中的每个z
,评估函数fun
,i
中的df.x.unique()
,在元素方面计算步骤(2)中输出的乘积。我期望得到一个DataFrame或维数组(len(df.x.unique(),n = 100)答案 0 :(得分:0)
听起来你想要按'x'分组,取其中一个实例(让我们假设我们观察了第一个实例)。
按如下方式调用您的函数:
f = fun(df.groupby('x').first())
>>> f.shape
Out[25]: (4, 100)
>>> len(df.x.unique()
Out[26]: 4