pandas 如果我的行等于1,则在另一行中返回列的名称

zbwhf8kr  于 2023-01-24  发布在  其他
关注(0)|答案(1)|浏览(96)

我有一个 Dataframe ,看起来像这样

+--------+--------+--------+--------+--------+
| index  | Q111   | Q570   | Q7891  |Info583 |
+--------+--------+--------+--------+--------+
| 1      |      1 |      0 |      0 |      0 |
| 2      |      0 |      1 |      1 |      0 |
| 3      |      0 |      0 |      0 |      1 |
| code   |      1 |      0 |      0 |      1 |
+--------+--------+--------+--------+--------+

我希望对于索引行"code"中的每一个1,在新列"key_name"中有相应列的名称,下面是所需的最终结果

+--------+--------+--------+--------+--------+--------+
| index   | Q111   | Q570   | Q7891  |Info583|key_name|
+--------+--------+--------+--------+--------+--------+
| 1      |      1 |      0 |      0 |      0 |  Q111  |
| 2      |      0 |      1 |      1 |      0 |  nan   |
| 3      |      0 |      0 |      0 |      1 |  nan   |
| 4      |      1 |      0 |      0 |      1 | Info583|
| code   |      1 |      0 |      0 |      1 | nan    |
+--------+--------+--------+--------+--------+--------+

感谢任何帮助或建议!

vmdwslir

vmdwslir1#

我想这就是你要找的

df['key_name'] = np.nan
condition = df.loc['code', :] == 1
df.loc[condition, 'key_name'] = df.columns[condition]

先用nan的值做一列,然后计算你的条件:索引为“code”的行等于1。然后在满足条件时插入列名。

相关问题