python-3.x - 数据框融化并保留索引
问题描述
我有一个像这样的数据框:
df = pd.DataFrame(
[
["True", "False"],
["True", "True"],
["False", "True"],
],
index=["bob", "sue", "joe"],
columns=["R1", "R2"],
)
我想融化 df 以便使用索引名称,并将 Trues 替换为列名,因此输出如下:
df = pd.DataFrame(
[
["bob", "R1"],
["sue", "R1"],
["sue", "R2"],
["joe", "R2"],
],
columns=["Names", "Role"],
)
我怎样才能做到这一点?
解决方案
首先使用DataFrame.melt
将索引转换为列:
df = df.rename_axis('Names').reset_index().melt('Names', var_name='Role')
True
然后按值过滤:
df = df.loc[df['value'].map({'True':True, 'False':False}), ['Names','Role']]
或者:
df = df.loc[df['value'] == 'True', ['Names','Role']]
print(df)
Names Role
0 bob R1
1 sue R1
4 sue R2
5 joe R2
推荐阅读
- python - 显示 rs 图像的地图有一个错误。右上角的图层控件有图像名称,但不在地图中显示?
- http-status-code-404 - ARR(负载平衡模式)仅显示 404
- java - 等待 Firebase 异步回调在循环内完成
- android - 将改造对象放在 Kotlin 中的其他活动中
- python-3.x - 如果分片路径在 20 分钟后没有移动,如何制作共享路径监控脚本以生成 Outlook 电子邮件警报?
- java - 定时器任务在第一次运行后停止调用运行方法
- python-3.x - 在python中评估字符串中的数学表达式
- discord - lavalink 不和谐示例 cog 的问题
- reactjs - 使用返回 null 的条件渲染基于钩子状态渲染不同的组件
- reactjs - eslint sort-imports 混合单个和多个