看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
数据透视时,有两种情况一种是只进行形式变化,不对数据进行聚合,另外一种会做聚合计算,在本例中,我们将这完成后者这样的一个需求。
源数据如下:
import pandas as pd
from io import StringIO
data = '''
foo,bar,baz
one,A,1
one,A,2
two,B,3
two,C,4
'''
df = pd.read_csv(StringIO(data))
df
# ...
需要将数据进行透视,行为bar、列为foo、值取baz,其中如果有两个值,用逗号进行分隔,如 1,2
。
pandas的透视功能中,如果只变形的用 pivot() 方法,如果值有聚合计算的用 pivot_table()。
由于是数字按字符拼接,需要将数据先从数字转为字符串,aggfunc参数传入拼接字符的函数。
先转移数据类型,使用 pivot_table() 方法,行、列、值参数传入对应列名,聚合方法使用str.join() 方法:
(
df.astype({'baz': str})
.pivot_table(index='bar',
columns='foo',
values='baz',
aggfunc=','.join)
)
'''
foo one two
bar
A 1,2 NaN
B NaN 3
C NaN 4
'''
这样就完成了需求。
(完)
更新时间:2024-08-18 16:07:31 标签:pandas python 透视