如何将数据透视列转换为索引,将行转换为列



我有以下dfs

a = {"A":[123],"B":[19],"C":[18],"J":[220],'name':['group_1']}
b = {"A":[123],"B":[80],"C":[10],"D":[3],'name':['group_2']}
df1 = pd.DataFrame(a)
df2 = pd.DataFrame(b)

当附加它们时,得到:

df = df1.append(df2).fillna(0).reset_index(drop=True)
A B   C   D       J       name
0   123 19  18  0.00    220.00  group_1
1   123 80  10  3.00    0.00    group_2

我想要这个:

group_1    group_2
A     123        123
B     19         80
C     18         10
D     0          3
J     220        0

我希望融化或透视表将做的伎俩,但结果不像预期的那样。示例:df.pivot_table(index=['A','B','C','D','J'], columns=['name'], aggfunc='count')将不显示'name' (group_1/2)作为列。

你可以试试

df1.append(df2).fillna(0).reset_index(drop=True).set_index('name').T
Out[284]: 
name  group_1  group_2
A       123.0    123.0
B        19.0     80.0
C        18.0     10.0
J       220.0      0.0
D         0.0      3.0

我会做类似于@BENY,但使用pandas.concat更通用一点,并在设置索引后填充值,以受益于类型向下转换为int:

pd.concat([df1, df2]).set_index('name').fillna(0, downcast='infer').T

输出:

name  group_1  group_2
A         123      123
B          19       80
C          18       10
J         220        0
D           0        3

相关内容

  • 没有找到相关文章

最新更新