python - 使用每列中的所有字符串数据旋转熊猫数据框
问题描述
示例数据框:
Name Attribute Response
Joe A Yes
Joe B smoking
Joe B headache
Mary A Null
Mary B Never
Bob C Today
Mary A Tomorrow
我已经尝试了几个小时并搜索了所有明显相似的 SO 问题,以将此 df 转换为以下所需的输出。请注意,Joe 和 Mary 有不止一行的 Attribute 相同,但响应不同。
期望的输出
Name A B C
Joe Yes smoking, headache Null
Mary Null, tomorrow Never Null
Bob Null Null Today
再次重申,我已经查看了所有关于将数据帧从长到宽重塑的 SO 响应,但没有一个涉及这个精确的问题。此外,这些响应中的每一个都涉及我实施的答案,并且都导致错误,无论是值错误还是数据错误,尤其是指出索引包含重复值的错误。因此,感谢您的帮助。
解决方案
你可以这样.pivot_table()
做aggfunc=list
:
print(
df.pivot_table(
index="Name", columns="Attribute", aggfunc=list, fill_value="Null"
).droplevel(0, axis=1)
)
印刷:
Attribute A B C
Name
Bob Null Null [Today]
Joe [Yes] [smoking, headache] Null
Mary [Null, Tomorrow] [Never] Null
或者,如果您不想要列表:
print(
df.pivot_table(
index="Name",
columns="Attribute",
aggfunc=",".join,
fill_value="Null",
).droplevel(0, axis=1)
)
印刷:
Attribute A B C
Name
Bob Null Null Today
Joe Yes smoking,headache Null
Mary Null,Tomorrow Never Null
编辑:要重命名索引:
df = df.pivot_table(
index="Name",
columns="Attribute",
aggfunc=",".join,
fill_value="Null",
)
df.index.name = ""
df.columns.name = ""
推荐阅读
- oracle - 在 Oracle sql live 上运行时缺少右括号
- ruby-on-rails - rails_admin datepicker 不让我设置 bc 日期
- python - 如何调用另一个 Python 3 脚本并传递一些参数
- android - 带有BottomNavigationView的Android Jetpack Navigation正确返回堆栈
- css - 发送带有 css 函数样式的 html 表格,而无需发送 css 文件
- angular - Angular 6 中的许多路由器插座
- html - 自动启动和循环插入不适用于音频属性
- ruby-on-rails - 关于 Rails on Run Rails 的问题
- java - Selenium WD 无法在cheaptickets.in 的弹出窗口中找到 webelement
- linux - GPU 如何渲染到正确的窗口?