python - 使用多列透视 Pandas 数据框

标签 python pandas dataframe

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

我的数据采用以下格式:

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

我想将其 reshape 为:

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 

我试过了

    csv3 = csv2.pivot_table(index=['Record ID', 'Para'], columns=csv2.iloc[:,2:], aggfunc='size', fill_value=0).reset_index()

但列不正确。我需要做哪些不同的事情?

更新1:

我有 10 列。

最佳答案

IIUC get_dummies

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

更新

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

关于python - 使用多列透视 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50827506/

相关文章:

python - 将二维数组附加到一个数组

python - 如何使用 Facebook Prophet 选择初始、期间、范围和截止值?

python - 如何动态添加自定义管理器以在 Django 中建模

pandas - 从 Pandas 数据框中的日期获取财政年度并添加为新列

python - xarray 多索引连接的最佳实践

带有 Selenium 的 Python Urllib2 Cookiejar

python - pandas 基于独特的值(value)观和标准

python - Pandas 根据日期组合行

python - 使用字符串日期对 pandas csv 列表进行排序

将 write.xlsx 与使用 'dplyr' 函数创建的对象一起使用时出现 R 错误