首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用多列的Pandas数据透视

问使用多列的Pandas数据透视
EN

Stack Overflow用户
提问于 2018-06-13 00:17:59
回答 2查看 95关注 0票数 1

这是Pivot a dataframe with two columns as the index的后续问题。

我的数据采用这种格式:

代码语言:javascript
复制
Record ID Para  Col2     Col3
1          A        x      a
1          A        x      b
2          B        y      a
2          B        y      b
1          A        z      c
1          C        x      a

我想把它重塑为:

代码语言:javascript
复制
Record Para  a     b      c    x   y  z 
1       A    1     1      1    1   0  1
1       C    1     1      1    1   0  1
2       B    1     1      0    0   1  0 

我试过了

代码语言:javascript
复制
    csv3 = csv2.pivot_table(index=['Record ID', 'Para'], columns=csv2.iloc[:,2:], aggfunc='size', fill_value=0).reset_index()

但别把专栏搞错了。我需要做什么改变呢?

更新1:

我有10根柱子。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-13 01:37:16

IIUC get_dummies

代码语言:javascript
复制
pd.get_dummies(df.set_index(['RecordID','Para']),prefix='',prefix_sep = '').sum(level=[0,1]).gt(0).astype(int)
Out[272]: 
               x  y  z  a  b  c
RecordID Para                  
1        A     1  0  1  1  1  1
2        B     0  1  0  1  1  0

更新

代码语言:javascript
复制
pd.get_dummies(df.set_index(['RecordID','Para']),prefix='',prefix_sep = '').sum(level=[0,1]).gt(0).astype(int).replace(0,np.nan).groupby(level=0).ffill().fillna(0)
Out[292]: 
                 x    y    z  a    b    c
RecordID Para                            
1        A     1.0  0.0  1.0  1  1.0  1.0
2        B     0.0  1.0  0.0  1  1.0  0.0
1        C     1.0  0.0  1.0  1  1.0  1.0
票数 1
EN

Stack Overflow用户

发布于 2018-06-13 00:29:26

您可以聚合到set,然后使用get_dummies。

代码语言:javascript
复制
df2 = df.groupby(['RecordID', 'Para'])[df.columns[2:]].aggregate(set)

values = df2.apply(lambda x: set().union(*x.values), axis=1)
dummies = values.str.join('|').str.get_dummies()

res = dummies.reset_index()

print(res)

   RecordID Para  a  b  c  x  y  z
0         1    A  1  1  1  1  0  1
1         2    B  1  1  0  0  1  0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50827506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档