Python 创建一个数组,该数组由标题替换为1,每行跳过0

Python 创建一个数组,该数组由标题替换为1,每行跳过0,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,其中a、b和c是标题 我有上面显示的数据框,我需要以下格式的结果: a b c 1 1 0 0 0 1 1 0 1 如您所见,值为1的标题将出现,值为0(零)的标题将被跳过。这里有一种方法 [[a,b], [c], [a,c]] 对于值数组,请使用.values In [96]: df.astype(bool).apply(lambda x: df.columns[x.tolist()].toli

其中a、b和c是标题

我有上面显示的数据框,我需要以下格式的结果:

     a  b  c
     1  1  0
     0  0  1
     1  0  1
如您所见,值为1的标题将出现,值为0(零)的标题将被跳过。

这里有一种方法

      [[a,b],
       [c],
       [a,c]]
对于值数组,请使用
.values

In [96]: df.astype(bool).apply(lambda x: df.columns[x.tolist()].tolist(), axis=1)
Out[96]:
0    [a, b]
1       [c]
2    [a, c]
dtype: object
或者,使用
iterrows

In [102]: df.astype(bool).apply(lambda x: df.columns[x.tolist()].tolist(), axis=1)
     ...: .values
Out[102]: array([['a', 'b'], ['c'], ['a', 'c']], dtype=object)
输出:

main_list = []
for ind in df.index:
    sublist = []
    for column in df.columns:
        if df.loc[ind, column]:
            sublist.append(column)  
    main_list.append(sublist)
希望能有帮助

main_list = []
for ind in df.index:
    sublist = []
    for column in df.columns:
        if df.loc[ind, column]:
            sublist.append(column)  
    main_list.append(sublist)
[['a', 'b'], ['c'], ['a', 'c']]