gpt4 book ai didi

pandas - 使用熔化、堆栈和多索引 reshape 数据框?

转载 作者:行者123 更新时间:2023-12-02 08:15:13 25 4
gpt4 key购买 nike

我是 Python 新手,我有一个数据框需要进行一些复杂的 reshape 。最好用一个使用虚拟数据的示例来描述:

我有这个:

enter image description here

我需要这个: enter image description here

原始数据框是:

testdata = [('State', ['CA', 'FL', 'ON']),
('Country', ['US', 'US', 'CAN']),
('a1', [0.059485629, 0.968962817, 0.645435903]),
('b2', [0.336665658, 0.404398227, 0.333113735]),
('Test', ['Test1', 'Test2', 'Test3']),
('d', [20, 18, 24]),
('e', [21, 16, 25]),
]
df = pd.DataFrame.from_items(testdata)

我想要的数据框是:

testdata2 = [('State', ['CA', 'CA',  'FL', 'FL', 'ON', 'ON']),
('Country', ['US', 'US', 'US', 'US', 'CAN', 'CAN']),
('Test', ['Test1', 'Test1', 'Test2', 'Test2', 'Test3', 'Test3']),
('Measurements', ['a1', 'b2', 'a1', 'b2', 'a1', 'b2']),
('Values', [0.059485629, 0.336665658, 0.968962817, 0.404398227, 0.645435903, 0.333113735]),
('Steps', [20, 21, 18, 16, 24, 25]),
]
dfn = pd.DataFrame.from_items(testdata2)

看起来该解决方案可能需要使用熔化、堆栈和多索引,但我不确定如何将所有这些结合在一起。

任何建议的解决方案将不胜感激。

谢谢。

最佳答案

让我们尝试一下:

df1 = df.melt(id_vars=['State','Country','Test'],value_vars=['a1','b2'],value_name='Values',var_name='Measuremensts')
df2 = df.melt(id_vars=['State','Country','Test'],value_vars=['d','e'],value_name='Steps').drop('variable',axis=1)
df1.merge(df2, on=['State','Country','Test'], right_index=True, left_index=True)

输出:

  State Country   Test Measuremensts    Values  Steps
0 CA US Test1 a1 0.059486 20
1 FL US Test2 a1 0.968963 18
2 ON CAN Test3 a1 0.645436 24
3 CA US Test1 b2 0.336666 21
4 FL US Test2 b2 0.404398 16
5 ON CAN Test3 b2 0.333114 25

或者使用@JohnGalt解决方案:

pd.concat([pd.melt(df, id_vars=['State', 'Country', 'Test'], value_vars=x) for x in [['d', 'e'], ['a1', 'b2']]], axis=1)

关于pandas - 使用熔化、堆栈和多索引 reshape 数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45523818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com