如果特定行的列在该列中包含 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 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
首先
您的问题非常模棱两可,我建议阅读@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 的内容,使用我们之前创建的掩码检查它们,并打印预期结果:边注:
您看到我如何生成可以轻松复制的样本数据了吗?以后请尽量用张贴的可以复现的样例数据提问。这样可以帮助您更好地了解您的问题,我们也可以更轻松地为您解答。