繁体   English   中英

如何在 excel 中读取第一列及其值作为 Pandas 数据框中的列名

[英]How to read the first column with its values in excel as a columns names in pandas data frame

所以首先我有一个包含很多工作表的 Excel 文件,现在有一些工作表看起来像这样:

|    Date    | 11-12-2019  | 12-12-2019   | 13-12-2019 | 14-12-2019  | 15-12-2019   |
|:-----------|------------:|:------------:|:-----------|------------:|:------------:|
| Col_1      |    1111     |     2222     | 3333       |        4444 |     5555     |
| Col_2      |    1111     |     2222     | 3333       |        4444 |     5555     |
| Col_3      |    1111     |     2222     | 3333       |        4444 |     5555     |
| Col_4      |    1111     |     2222     | 3333       |        4444 |     5555     |
| Col_5      |    1111     |     2222     | 3333       |        4444 |     5555     |
| Col_6      |    1111     |     2222     | 3333       |        4444 |     5555     |

我想用熊猫数据框使它成为这样的:

|    Date    |    Col_1    |     Col_2    | Col_3      |   Col_4     |     Col_5    |     Col_5    |
|:-----------|------------:|:------------:|:-----------|------------:|:------------:|:------------:|
| 11-12-2019 |    1111     |     1111     | 1111       |    1111     |     1111     |     1111     |
| 12-12-2019 |    2222     |     2222     | 2222       |    2222     |     2222     |     2222     |
| 13-12-2019 |    3333     |     3333     | 3333       |    3333     |     3333     |     3333     |
| 14-12-2019 |    4444     |     4444     | 4444       |    4444     |     4444     |     4444     |
| 15-12-2019 |    5555     |     5555     | 5555       |    5555     |     5555     |     5555     |

那么是否可以使用 python pandas 或任何其他库来做到这一点?

我们可以使用Transpose (与DataFrame.T相同)来做到这一点。 然后使用DataFrame.iloc用第一行替换列名:

dft = df.T                  # transpose dataframe
dft.columns = dft.iloc[0]   # replace columns, by values in first row
dft = dft.iloc[1:]          # remove first row.
Date       Col_1 Col_2 Col_3 Col_4 Col_5 Col_6
11-12-2019  1111  1111  1111  1111  1111  1111
12-12-2019  2222  2222  2222  2222  2222  2222
13-12-2019  3333  3333  3333  3333  3333  3333
14-12-2019  4444  4444  4444  4444  4444  4444
15-12-2019  5555  5555  5555  5555  5555  5555

你也可以使用df.swapaxes

>>> df.set_index('Date').swapaxes(1,0)

Date        Col_1  Col_2  Col_3  Col_4  Col_5  Col_6
11-12-2019   1111   1111   1111   1111   1111   1111
12-12-2019   2222   2222   2222   2222   2222   2222
13-12-2019   3333   3333   3333   3333   3333   3333
14-12-2019   4444   4444   4444   4444   4444   4444
15-12-2019   5555   5555   5555   5555   5555   5555

您可以使用 Python 库/Excel 插件 xlwings 执行此操作。 代码将是这样的:

import xlwings as xw
sht = xw.Book().sheets[0]
pd_df = sht.range('reference to cells with data').options(transpose = True, pd.DataFrame, index = True, header = True).value

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM