如何根据条件 > 0 创建具有行值和列名的列

How can I create column with row value and column names based on condition > 0

我有以下数据框:

F1 F2 F3
1 0 0
1 0 1
0 1 0
0 1 1

我需要一个包含此结果的新列:

F1 F2 F3 Type
1 0 0 1F1
1 0 1 1F1 1F3
0 1 0 1F2
0 1 1 1F2 1F3

基本上,如果值大于 0,新列需要包含值 + 该列的名称。

我尝试了各种 iterrows 和 iteritems,但无法正确执行代码。

感谢您的帮助。

尝试 stack ,然后 groupby agg 返回

s = df.stack().reset_index(level=1)
s = s[s[0]!=0]
df['new'] = (s[0].astype(str)+s['level_1']).groupby(level=0).agg(' '.join)
df
   F1  F2  F3      new
0   1   0   0      1F1
1   1   0   1  1F1 1F3
2   0   1   0      1F2
3   0   1   1  1F2 1F3