透视表采用Python Pandas,单价一笔一笔

2024-09-30 10:37:44 发布

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

我想用pypandas从这类数据生成一个pivot表

id      product  credit
1        book      -5
1        ipad     -15
1      server     -25
2        book      -5
15      server     -25
2       glass      -2
2       glass      -2
1        book      -5
15       glass      -2
1         car    -150

到 那种电子表格

^{pr2}$

这将以列的形式显示id,以行的形式显示产品,单位信用和购买的产品数量。在

谢谢你的帮助

-小时


Tags: 数据idserver产品productcar形式电子表格
1条回答
网友
1楼 · 发布于 2024-09-30 10:37:44

主要思想是使用^{}。在

如果您只想sum您的数据,那么np.sum可以:

>>> df.pivot_table(cols='id', values='credit', rows='product', aggfunc=np.sum)
id        1   2   15
product             
book     -10  -5 NaN
car     -150 NaN NaN
glass    NaN  -4  -2
ipad     -15 NaN NaN
server   -25 NaN -25

或者,您可以使用^{}来获得符合您需要的格式的数据(Counter性能不高,因此请注意这一点):

^{pr2}$

或者定义自定义函数以精确获取所需的内容:

>>> from collections import defaultdict
>>> def hlp_count(x):
...     d = defaultdict(int)
...     for v in x:
...         d[v] += 1
...     # join in case you have more than one distinct price
...     return ', '.join(['{0} ({1})'.format(k, v) for k, v in d.iteritems()])

>>> df.pivot_table(cols='id', values='credit', rows='product', aggfunc=hlp_count)
id             1       2        15
product                           
book       -5 (2)  -5 (1)      NaN
car      -150 (1)     NaN      NaN
glass         NaN  -2 (2)   -2 (1)
ipad      -15 (1)     NaN      NaN
server    -25 (1)     NaN  -25 (1)

相关问题 更多 >

    热门问题