如何根据条件 > 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
我有以下数据框:
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