Python:转置列和重复行

Python: Transpose columns & duplicate rows

我是 Python 的新手,我正在尝试解决以下问题...

我读到 excel 文件 pandas 看起来像这样:

国家 2000 2001 2002 2003 2004 ...
阿根廷 1.23 4.56 7.89 10.11 12.13 ...
巴西 14.15 16.17 18.19 20.21 22.23 ...
智利 ... ... ... ... ... ...
哥伦比亚 ... ... ... ... ... ...

而我试图得到的是这样的:

国家 价值
阿根廷 2000 1.23
阿根廷 2001 4.56
阿根廷 2002 7.89
阿根廷 2003 10.11
阿根廷 2004 12.13
... ... ...
巴西 2000 14.15
巴西 2001 16.17
巴西 2002 18.19
巴西 2003 20.21
巴西 2004 22.23
... ... ...
智利 2000 ...
... ... ...

我已经阅读了一些关于移调的帖子,但没有找到任何可以解决我的问题的帖子。

有人可以帮忙吗?

pandas.melt 对您取消透视数据框很有用。

https://pandas.pydata.org/docs/reference/api/pandas.melt.html

因此,您可以按如下方式将数据框转换为您想要的内容:

代码

>>> import pandas as pd
>>> pd.__version__
'1.2.4'
>>> df = pd.DataFrame({
...     "Country": ["Argentina", "Brazil",],
...     "2000": [1.23, 14.15,],
...     "2001": [4.56, 16.17,], 
...     "2002": [7.89, 18.19,],
...     "2003": [10.11, 20.21,],
...     "2004": [12.13, 22.23,],
... })  # Create sample data

>>> df
     Country   2000   2001   2002   2003   2004
0  Argentina   1.23   4.56   7.89  10.11  12.13
1     Brazil  14.15  16.17  18.19  20.21  22.23

>>> df.melt(id_vars="Country", var_name="Year", value_name="Value")
     Country  Year  Value
0  Argentina  2000   1.23
1     Brazil  2000  14.15
2  Argentina  2001   4.56
3     Brazil  2001  16.17
4  Argentina  2002   7.89
5     Brazil  2002  18.19
6  Argentina  2003  10.11
7     Brazil  2003  20.21
8  Argentina  2004  12.13
9     Brazil  2004  22.23

>>> # If you want to sort the records by "Country":
>>> df.melt(id_vars="Country", var_name="Year", value_name="Value").sort_values("Country").reset_index(drop=True)
     Country  Year  Value
0  Argentina  2000   1.23
1  Argentina  2001   4.56
2  Argentina  2002   7.89
3  Argentina  2003  10.11
4  Argentina  2004  12.13
5     Brazil  2000  14.15
6     Brazil  2001  16.17
7     Brazil  2002  18.19
8     Brazil  2003  20.21
9     Brazil  2004  22.23

谢谢:)