个人(从0到5)在A和B两个地点之间进行选择。 我的数据是宽格式,包含个体特征(ind_var)和仅由位置变化的特征(location_var)。
例如,我有:
In [281]:
df_reshape_test = pd.DataFrame( {'location' : ['A', 'A', 'A', 'B', 'B', 'B'], 'dist_to_A' : [0, 0, 0, 50, 50, 50], 'dist_to_B' : [50, 50, 50, 0, 0, 0], 'location_var': [10, 10, 10, 14, 14, 14], 'ind_var': [3, 8, 10, 1, 3, 4]})
df_reshape_test
Out[281]:
dist_to_A dist_to_B ind_var location location_var
0 0 50 3 A 10
1 0 50 8 A 10
2 0 50 10 A 10
3 50 0 1 B 14
4 50 0 3 B 14
5 50 0 4 B 14
变量“location”是由个人选择的变量。dist_to_A是从个人选择的位置到位置A的距离(dist_to_B同理)。
我希望我的数据具有以下形式:
choice dist_S ind_var location location_var
0 1 0 3 A 10
0 0 50 3 B 14
1 1 0 8 A 10
1 0 50 8 B 14
2 1 0 10 A 10
2 0 50 10 B 14
3 0 50 1 A 10
3 1 0 1 B 14
4 0 50 3 A 10
4 1 0 3 B 14
5 0 50 4 A 10
5 1 0 4 B 14
当choice == 1时,表示个人已选择该地点,dist_S是所选择的位置距离的距离。
我了解了.stack方法,但不知道如何在这种情况下应用它。感谢您的时间!
注意:这只是一个简单的示例。我正在寻找具有不同数量的位置和每个位置的个体数量的数据集,因此如果可能,我正在寻找一种灵活的解决方案。
location
变量没有错误。dist_to_
变量应该是个体(由索引给出)与位置之间的距离。选择表示个体在此次机会中选择了什么(她选择了A或B位置)。我尝试在我的问题中明确表达这一点,但如果还不清楚,请让我知道,我可以重新写一下。 - cd98location
变量看起来不太对。ID = 0
怎么可能既在A
又在B
呢?根据你的宽表,ID = 0
位于A
。此外,我不太明白为什么这种方法与你的问题不匹配。 - Zhen Sunlocation
变量是个人的位置。实际上它是选择的位置,而且个人的位置似乎不在数据中。尽管如此,请查看编辑后的代码。我创建了一个字典,在重塑之前创建了个体和location
变量之间的对应关系。 - Zhen Sunpd.melt()
就是我要找的。 - citynorman