我不知道,怎么我可以做下面的转换:熊猫:包含变量的名称和值的多个列:如何使用Pivot?
我有一个数据帧寻找这样的:
Index Name detail1 detail1_value detail2 detail2_value detail3 detail3_value
1 Albert Age 30 Group A Hometown beautifulplace
2 Bea Age 28 Hometown anotherplace None None
3 Celin Age 45 Group B None None
4 Dave Group A None None None None
但是你可以想像,我的宗旨是:
Index Name Age Group Hometown
1 Albert 30 A beautifulplace
2 Bea 28 anotherplace
3 Celin 45 B
4 Dave A
我很确定ech细节只出现一次。 为了保持复杂:我不确定每个细节是否完全相同(在某些情况下,例如Hometowns而不是家乡)。
我目前唯一能看到的解决方案是从每对列(如detail1和detail1_value)中生成singel数据透视表。在第二步中,创建一个新的数据集,并在年龄信息上搜索这些数据透视表中的每一个。 但我对python的信任告诉我,必须有更好的办法...
谢谢!
PS: 可能会有帮助:
dataset = pd.DataFrame({'Name': ['Albert', 'Bea', 'Celine', 'Dave'],
'detail1': ['Age', 'Age', 'Age', 'Group'],
'detail1_value': ['30', '28', '45', 'A'],
'detail2': ['Group', 'Hometown', 'Group', None],
'detail2_value': ['A', 'anotherplace', 'B', None],
'detail3': ['Hometown', None, None, None],
'detail3_value': ['beautifulplace', None, None, None]})
我有点被你的数据集不解。举例来说:对于索引2,在我看来,Hometown属于列detail3,另一个属于列detail3_value。 – vestland
你说得对。这是我的问题的原因。你会发现与索引4相同的情况,其中“组”是详细1而不是像其他“组”一样的细节2。否则解决方案将是一个简单的支点。 –
在这种情况下,我认为你应该重新考虑你的初始数据框是如何构建的。将有问题的值移到右边两个步骤并将其替换为None将使得操作更简单。是否有机会从Excel导入? – vestland