我有以下pandas数据帧:
Counts
Unique_ID Subcategory
a1 A 10440
B 312
C 119
a2 A 899
B 27
C 26
...
每个Unique_ID
都有三个子类别A
,B
,C
,每个子类别都有一个计数。有一种方法可以“展开”这个数据框,以便子类别是列,并且计数是有效的。这就是我想要的:
Unique_ID Subcategory_A Subcategory_B Subcategory_C
a1 10440 312 119
a2 899 27 26
如何做到这一点?
答案 0 :(得分:3)
首先使用unstack
,然后按droplevel
和add_prefix
删除顶级MultiIndex
:
df1 = df.unstack()
df1.columns = df1.columns.droplevel(0)
df1 = df1.add_prefix('Subcategory_')
print (df1)
Subcategory Subcategory_A Subcategory_B Subcategory_C
Unique_ID
a1 10440 312 119
a2 899 27 26
如果需要重置索引并删除列名:
df1 = df.unstack()
df1.columns = df1.columns.droplevel(0)
df1 = df1.add_prefix('Subcategory_')
.reset_index()
.rename_axis(None, axis=1)
print (df1)
Unique_ID Subcategory_A Subcategory_B Subcategory_C
0 a1 10440 312 119
1 a2 899 27 26