迭代对数组唯一值的操作

时间:2015-03-11 09:51:53

标签: python-2.7 python-3.x numpy pandas iterator

我有一个类似于生成的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
  • 项目相对应

有什么建议吗?

解释

  1. 生成n=100绘制以获得z len(z)=100
  2. 对于elem中的每个z,评估函数fun
  3. 对于i中的df.x.unique(),在元素方面计算步骤(2)中输出的乘积。我期望得到一个DataFrame或维数组(len(df.x.unique(),n = 100)
  4.  4。

1 个答案:

答案 0 :(得分:0)

听起来你想要按'x'分组,取其中一个实例(让我们假设我们观察了第一个实例)。

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

f = fun(df.groupby('x').first())

>>> f.shape
Out[25]: (4, 100)

>>> len(df.x.unique()
Out[26]:  4