python - 将 DataFrame 列名映射到适当的单元格
问题描述
这是我在此的头一篇博文。
我不完全知道如何在没有示例的情况下提出这个问题,因此很难找到答案。无论如何,我有一个看起来像这样的 DataFrame(有更多的列和数千行):
df = pd.DataFrame({"A": [1, 0, 0], "B": [0, 0, 1], "C": [0, 1, 0]})
我想创建额外的列,例如。“类型”,其中每一行的值将是该行中包含 1 的列的列名。例如:
df = pd.DataFrame({"A": [1, 0, 0], "B": [0, 0, 1], "C": [0, 1, 0], "Type": ["A", "C", "B"]})
我希望这是有道理的。
谢谢,克里斯
解决方案
您可以检查是否df
等于 1,使用.eq
,然后使用idxmax(axis=1)
获取该行中条目的列索引等于 1,如下所示:
df['Type'] = df.eq(1).idxmax(axis=1)
或在值为 0 和 1 的情况下简化它(感谢@wwii):
df['Type'] = df.idxmax(axis=1)
或者,您也可以使用df.dot
,如下所示:
df['Type'] = df.dot(df.columns)
结果:
print(df)
A B C Type
0 1 0 0 A
1 0 0 1 C
2 0 1 0 B
推荐阅读
- postgresql - 如何从 PostgreSQL 查询计划中获取解析和重写时间?
- apache - 在 docker 中的 nginx 前面运行 apache
- python - 如何为交叉验证的 param_distributions 和 fit_params 选择最佳值以拟合模型?
- html - BootstrapVue如何将b按钮推到b卡元素的底部
- css - wordpress - 下拉菜单指示器
- reactjs - Firebase读取与react useeffect异步不等待文档读取
- python - Flask - 复制当前请求上下文
- android - Android中按钮周围不需要的填充或边距
- html - 悬停一个元素以更改另一个元素,但没有其他方法?
- docker - 如何在 Kubernetes 中组合负载均衡器?