首页 > 解决方案 > 将具有选定列的数据框转换为具有指标值的值列

问题描述

我有一个包含 5 列的数据框,每列取值从 1 到 N。

df = pd.DataFrame({"A" : {0 : 1, 1 : 10, 2 : 12},
               "B" : {0 : 7, 1 : 6, 2 : 3},
               "C" : {0 : 11, 1 : 4, 2 : 1},
               "D" : {0 : 6, 1 : 5, 2 : 4},
              })
df

我想将此数据帧转换为具有第 1 到第 N 列的数据帧,其中第 j 列是该值是否存在于第 i 行中的指示符。

我尝试过这样的事情

(df
 .melt()
 .assign(val=1)
 .pivot_table(values='val', columns='value', fill_value=0)
)

但我似乎无法得到想要的结果

标签: pythonpandasnumpy

解决方案


你可以试试:

(df
   .reset_index()
   .melt(id_vars='index')
   .assign(val=1)
   .pivot_table(values='val', index='index', columns='value', fill_value=0, aggfunc='max')
)

数据输入:

print(df)

    A  B   C  D
0   1  7  11  6
1  10  6   4  5
2  12  3   1  4

输出:

value   1   3   4   5   6   7  10  11  12
index                                    
0       1   0   0   0   1   1   0   1   0
1       0   0   1   1   1   0   1   0   0
2       1   1   1   0   0   0   0   0   1

推荐阅读