对数组的唯一值进行迭代操作



我有一个熊猫数据帧,类似于生成如下的熊猫数据帧。

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])

我想:

  • x 中的每个唯一值使用相同的绘制z
  • 将上述步骤中输出的乘积放在具有独特x的项目上

有什么建议吗?

解释

  1. 生成n=100抽奖以获得z,以便len(z)=100
  2. 对于z中的每个elem,计算函数fun
  3. 对于df.x.unique()中的i,逐个元素计算步骤 (2) 中输出的乘积。我希望得到一个数据帧或维度数组(len(df.x.unique(), n=100)
  4. 4.

听起来你想按"x"分组,取它的一个实例(假设我们采用观察到的第一个实例)。

只需按如下方式调用您的函数:

f = fun(df.groupby('x').first())
>>> f.shape
Out[25]: (4, 100)
>>> len(df.x.unique()
Out[26]:  4

最新更新