Python 在数据透视表中传递给aggfunc的内容用于汇总计数器

Python 在数据透视表中传递给aggfunc的内容用于汇总计数器,python,pandas,pivot,pivot-table,Python,Pandas,Pivot,Pivot Table,我有一个包含两列“a”和“B”的数据表,“B”列中的元素是计数器。比如说, c = Counter(a=4, b=2) df = pd.DataFrame({"A": ["group1", "group1", "group1", "group2", "group2"], "B": [c, c, c, c, c]}) 我想创建一个透视表,在这里我对列“a”中的元素值进行分组,并通过将计数器相加来对列“B”进行聚合。我想知道我应该把什么传给aggfunc 这是

我有一个包含两列“a”和“B”的数据表,“B”列中的元素是计数器。比如说,

c = Counter(a=4, b=2)
df = pd.DataFrame({"A": ["group1", "group1", "group1", "group2", "group2"],
                   "B": [c, c, c, c, c]})
我想创建一个透视表,在这里我对列“a”中的元素值进行分组,并通过将计数器相加来对列“B”进行聚合。我想知道我应该把什么传给aggfunc

这是我尝试过的,但遗憾的是它不起作用:

pt = pd.pivot_table(df, index = ['A'], values = ['B'], aggfunc = ['+'])
有什么建议吗

我的预期产出是

table              
  group1  Counter(a=12, b=6)   # i.e., c+c+c
  group2  Counter(a=8, b=4)    # i.e., c+c

只不过是sum

>>> df.groupby('A')['B'].sum()
A
group1    {'a': 12, 'b': 6}
group2     {'a': 8, 'b': 4}
Name: B, dtype: object

注二:

  • 将字典放入dataframe列通常不是一个好的做法。我将使用两列分别保存
    'a'
    'b'
    的值
  • “B”:[c,c,c,c,c]
    使用相同的计数器对象初始化列
    'B'
    的每个元素
  • 演示:


    您可能需要
    “B”:[c.copy()表示范围(5)]
    -如果您想保留原始设计,也就是说。

    您的预期输出是什么?@MayankPorwal谢谢您的提问!我已经在问题描述中添加了。
    pt=pd.pivot_表(df,index=['A'],value=['B'],aggfunc=['sum'])
    ?@AndrejKesely它可以工作!!谢谢!有什么解释吗?抱歉,我是python初学者…@study_Guy
    '+'
    不是有效的函数名,
    'sum'
    可能是您的意思。
    >>> df.loc[0, 'B']['a'] = 100
    >>> df
    Out[9]: 
            A                   B
    0  group1  {'a': 100, 'b': 2}
    1  group1  {'a': 100, 'b': 2}
    2  group1  {'a': 100, 'b': 2}
    3  group2  {'a': 100, 'b': 2}
    4  group2  {'a': 100, 'b': 2}