python-3.x - 需要根据列分组将数据框行数据转换为列
问题描述
我有一个 CSV 文件,其中包含用户及其问题和答案,用于对工作申请进行预筛选问题。在某些情况下,给定的问题可以有多个答案。以下是 CSV 当前的外观:
User,RequisitionID,Question,Answer
user1,190004116,6162,7296
user2,190004086,6115,7260
user2,190004086,6117,7264
user2,190004086,6117,7265
user2,190004086,6117,7268
user2,190004086,6117,7269
user3,190005321,6321,4221
user3,190005321,6321,4322
而不是上述格式,我希望将答案数据表示在单独的列中(每个问题的不同答案的列数一样多),按用户、申请 ID 和问题分组,如下所示:
User,RequisitionID,Question,Answer1,Answer2,Answer3,Answer4
user1,190004116,6162,7296,,,
user2,190004086,6115,7260,,,
user2,190004086,6117,7264,7265,7268,7269
user3,190005321,6321,4221,4321,
我已经尝试使用如下的“groupby”,但我无法获得我想要的形状的结果数据框......
reqPrscrAnsFileFiltered = reqPrscrAnsFileFiltered.groupby(['User','RequisitionID','Question']).Answer.apply(list)
reqPrscrAnsFileFiltered = pandas.DataFrame(reqPrscrAnsFileFiltered.tolist(), index=reqPrscrAnsFileFiltered.index)
抱歉,但我是 Python 和 Pandas 的新手,所以任何帮助都会很棒。
好吧 - 我们快到了。我实现了您在评论中提供的 pivot_table 代码片段,但恐怕我不确定您对折叠 Multiindex 的意思。不这样做,Dataframe 输出如下:
Answer,Answer,Answer,Answer
1,2,3,4
7296.0,,,
7260.0,,,
7264.0,7265.0,7268.0,7269.0
4221.0,4322.0,,
你能帮我理解如何使它看起来像我的帖子中所需的输出吗?具体来说,我想删除带有答案索引号 (1,2,3,4) 的行,然后在答案列左侧的 User、RequisitionID 和 Question 的缺失列中添加回。抱歉,如果这是基本的东西...
解决方案
推荐阅读
- wordpress - WordPress多站点文件未找到问题
- java - Java 应用程序的 WebSphere 8.5.5.14 上的编码问题 - XML 解析:第 1 行,字符 39,无法切换编码
- python-3.x - 如何修复“TypeError:必须是实数,而不是 str”错误?
- python - 我可以使用参数插入来指定 MySQL 查询的列名吗?
- python-3.x - 无法在 tkinter 的列表框中插入数据
- android - 如何对方法进行单元测试,当它在android中有处理程序时
- node.js - 在 GCP Kubernetes 引擎的同一部署中运行应用程序的不同组件?
- c# - C#-如何根据字典值更新 DataTable 中的第一行
- java - 从'g'到'z'的字符如何在Java中将数字表示为String(包装类Integer)?
- xamarin.forms - Listview 搜索上的图像闪烁 - xamarin.forms