Python 使用字符串数据重塑数据帧-无类似答案
此格式的给定数据帧:Python 使用字符串数据重塑数据帧-无类似答案,python,pandas,reshape,Python,Pandas,Reshape,此格式的给定数据帧: Name Attribute Answer Joe One Yes Joe Two No Joe Two More info Mary One Left undone Mary Three No response Mary One Too late 我尝试了pi
Name Attribute Answer
Joe One Yes
Joe Two No
Joe Two More info
Mary One Left undone
Mary Three No response
Mary One Too late
我尝试了pivot、pivotable、unstack等版本,从长格式到宽格式“未融合”这些数据。我寻求的结果是:
Name One Two Three
Joe Yes No, More info Null
Mary Left undone, Too late Null No response
本质上,我需要将属性列中的所有唯一值设置为列标题,然后将每个唯一命名人员的属性列中的值设置为答案列中的值
我肯定有一些重塑魔法我还没有充分拼凑起来,但典型的方法和阅读20多个“从长到宽重塑数据”的问题都没有切中要害
我在大约两个小时前提出了这个问题,有人关闭了它,声称它已经得到了回答。Welp,仔细检查了每个假设的答案,没有一个成功。所以,我的问题还没有得到回答。仅供参考。尝试:
df.groupby(['Name','Attribute'])['Answer'].agg(lambda x: ', '.join(x)).unstack().reset_index()
输出:
Attribute Name One Three Two
0 Joe Yes NaN No, More info
1 Mary Left undone, Too late No response NaN
df.set_index(['Name','Attribute'])['Answer'].unstack().reset_index()
感谢您的及时回复。复制/粘贴此代码并引发此错误:“索引包含重复条目,无法重塑”df.groupby(['Name','Attribute'])['Answer'].first().unstack()
?@ScottBoston您的groupby产品似乎工作得很好。非常感谢@斯科特伯顿我说得太早了。这个问题与上面提到的其他问题不同。在我的df中,有一些行具有相同的名称、相同的属性,但响应不同。我编辑了我最初的问题,以反映这一细微差别。谢谢@Scott Boston。这个集体的例子非常有效。甚至有人要求插入一个“;”而不是逗号,这也很有效。再次感谢!