gpt4 book ai didi

python - 如何在 Python 中取消透视数据集

转载 作者:行者123 更新时间:2023-12-05 09:33:26 25 4
gpt4 key购买 nike

我有一个数据集,我需要将其转换为多行到列。

例如:

ID  Currency    Val1    Val2        Month
101 INR 57007037.32 1292025.24 2021-03
101 INR 49171143.9 1303785.98 2021-02
101 INR 54039073.81 1469727.23 2021-01
101 INR 67733998.9 1370086.78 2020-12
101 INR 48838409.39 1203648.32 2020-11
101 INR 43119693.71 0 2020-10

我需要如下旋转/取消旋转它们。

ID  Currency    Keys        2021-03     2021-02         2021-01         2020-12     2020-11     2020-10
101 INR Val1 57007037.32 49171143.9 54039073.81 67733998.9 48838409.39 4311.71
101 INR Val2 1292025.24 1303785.98 1469727.23 1370086.78 1203648.32 0

我试过 df.melt 但这不是给出准确的输出。

df = pd.read_csv('/path/abc.csv')
print(df.melt(id_vars=['id'], var_name=['month'], value_vars=['val1','val2']))

请帮忙解决这个问题。

最佳答案

1。 堆栈unstack

(df.set_index(['ID', 'Currency', 'Month']).stack()
.unstack(-2).reset_index().rename(columns={'level_2': 'keys'}))

2。 Meltpivot

df.melt(['ID', "Currency", 'Month'], var_name='keys')\
.pivot(['ID', 'Currency', 'keys'], 'Month', 'value').reset_index()

Month   ID Currency  keys      2020-10      2020-11      2020-12      2021-01      2021-02      2021-03
0 101 INR Val1 43119693.71 48838409.39 67733998.90 54039073.81 49171143.90 57007037.32
1 101 INR Val2 0.00 1203648.32 1370086.78 1469727.23 1303785.98 1292025.24

关于python - 如何在 Python 中取消透视数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67250796/

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