如何将列名放入pandas中具有特定条件的数据框单元格中

sar*_*iii 4 python data-analysis dataframe pandas

我有这样的数据帧:

         ADR     WD      EF    INF    SSI   DI
0        1.0    NaN     NaN    NaN    NaN  NaN
1        NaN    NaN     1      1      NaN  NaN
2        NaN    NaN     NaN    NaN    1    NaN
3        NaN    1       1      1      NaN  NaN
4        NaN    1.0     NaN    NaN    NaN  NaN
Run Code Online (Sandbox Code Playgroud)

我希望结果是这样的:

[["ADR"],["EF","INF"],["SSI"],["WD","EF","INF"],["WD"]]
Run Code Online (Sandbox Code Playgroud)

如您所见,如果列中有列的名称已被替换1.所有都被放在另一个阵列中.

我看过这个帖子链接,但它没有帮助我,因为名称已经静态改变.

谢谢:)

jez*_*ael 5

用:

df1 = df.stack().reset_index()
df1.columns = ['a','b','c']
df1 = df1[df1['c'] == 1]

a = df1.groupby('a')['b'].apply(list).tolist()
print (a)
[['ADR'], ['EF', 'INF'], ['SSI'], ['WD', 'EF', 'INF'], ['WD']]
Run Code Online (Sandbox Code Playgroud)


WeN*_*Ben 5

IIUC dot

df.notnull().dot(df.columns+',').str[:-1].str.split(',').tolist()
Out[753]: [['ADR'], ['EF', 'INF'], ['SSI'], ['WD', 'EF', 'INF'], ['WD']]
Run Code Online (Sandbox Code Playgroud)