Pandas:复制SASs proc意味着属性out=agg

2024-09-19 23:42:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个foo函数,它对一个数据帧进行操作;特别是数据帧的两列。 所以有点像

def foo(group):
  A = group['A']
  B = group['B']
  r1 = somethingfancy(A,B) #this is now a float
  r2 = somethinggreat(A,B) #this is another float
  return {'fancy':r1,'great':r2}

问题是,我希望在以下情况下使用此函数:

^{pr2}$

问题是agg现在是一系列DICT。我想把它转换成一个dataframe,它本质上看起来像:

someAttribute, fancy, great
...          , ...  , ...

Tags: 数据函数fooisdefgroupfloatthis
1条回答
网友
1楼 · 发布于 2024-09-19 23:42:47

不是返回dict,而是返回Series

def foo(group):
    A = group['A']
    B = group['B']
    r1 = randn()
    r2 = randn()
    return Series({'fancy': r1, 'great': r2})

df = DataFrame(randn(10, 1), columns=['a'])
df['B'] = np.random.choice(['hot', 'cold'], size=10)
df['A'] = np.random.choice(['sweet', 'sour'], size=10)
df['someAttribute'] = np.random.choice(['pretty', 'ugly'], size=10)
print df.groupby('someAttribute').apply(foo)

给予

^{pr2}$

如果希望someAttribute成为结果中的一列,请对结果调用reset_index

df.groupby('someAttribute').apply(foo).reset_index()

获得:

  someAttribute      fancy      great
0        pretty       0.46      -1.08
1          ugly       0.76       0.29

相关问题 更多 >