我有一个包含year
,month
,source
列的数据框,...每个(年,月,来源)有多个记录,我需要生成一个数据透视表其索引为(年,月),source为列,每个(年,月,来源)的记录数为值。我有以下代码
df.privot_table(index = ['year','month'], columns = ['source'], aggfunc = np.size, fill_value = 0)
这是我的数据的样子
2001,02,A, ....
2001,02,A,....
2001,03,B,....
2001,03,B,....
2001,03,B,....
这就是我希望数据
的方式 A B
2001, 02, 2, 0
2001, 03, 0, 3
但它会抛出以下错误消息
Reindexing only valid with uniquely values index objects
出了什么问题?
答案 0 :(得分:0)
使用aggfunc=len
可以达到所需的输出。
import pandas as pd
df = pd.DataFrame([[2001, '02', 'A'], [2001, '02', 'A'], [2001, '03', 'B'],
[2001, '03', 'B'], [2001, '03', 'B']],
columns=['Year', 'Month', 'Source'])
res = df.pivot_table(index=['Year', 'Month'], columns='Source',
aggfunc=len, fill_value=0)
print(res)
Source A B
Year Month
2001 02 2 0
03 0 3