如果特定行的列在该列中包含 1,我想获取该列的名称。
原文由 VIBHOR GOYAL 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 DataFrame.dot
:
df1 = df.dot(df.columns)
如果每行有多个 1
:
df2 = df.dot(df.columns + ';').str.rstrip(';')
原文由 jezrael 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答4.3k 阅读✓ 已解决
2 回答852 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
3 回答840 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
4 回答2.5k 阅读
3 回答894 阅读✓ 已解决
首先
您的问题非常模棱两可,我建议阅读@sammywemmy 评论中的此 链接。如果我正确理解你的问题……我们将首先讨论这个面具:
发生了什么?让我们从内部开始向外工作
df.columns[**HERE**]
:(df == 1)
makes a boolean mask of thedf
withTrue
/False
(1
/0
).any()
根据 文档:这给了我们一个方便的
Series
来屏蔽列名。我们将使用此示例在下面为您的解决方案自动化
下一个:
自动获取
(<row index> ,[<col name>, <col name>,..])
的输出,其中1
在行值中。虽然这在大型数据集上会变慢,但它应该可以解决问题:下一步是
for
循环,迭代df_dict
中每个 df 的内容,使用我们之前创建的掩码检查它们,并打印预期结果:边注:
您看到我如何生成可以轻松复制的样本数据了吗?以后请尽量用张贴的可以复现的样例数据提问。这样可以帮助您更好地了解您的问题,我们也可以更轻松地为您解答。