python实现Excel多行多列的转换的示例

  • Post category:Python

对于“Python实现Excel多行多列的转换”这个问题,我可以提供以下的思路和示例:

思路

  1. 使用Python的pandas库来读取Excel文件;
  2. 对于Excel的每一行数据,将其转换为多列的形式;
  3. 将转换后的结果写入新的Excel文件或csv文件中。

示例一:Excel文件的列转行

考虑以下的Excel文件:

| col1 | col2 | col3 |
|------|------|------|
| 001  | 002  | 003  |
| 004  | 005  | 006  |

我们希望将其转换为如下形式:

| col1 | value |
|------|-------|
| col2 | value |
|------|-------|
| col3 | value |
|------|-------|
|  col1|   001 |
|  col2|   002 |
|  col3|   003 |
|  col1|   004 |
|  col2|   005 |
|  col3|   006 |

使用以下的Python代码可以实现该转换:

import pandas as pd

# 读取原始文件
df = pd.read_excel("input.xlsx")

# 将列名转换为新的dataframe
df_columns = pd.DataFrame(df.columns, columns=["col1"])

# 将列名所在的行转换为新的dataframe
df_data = df.transpose().reset_index()

# 将新的dataframe的列名修改为"col2"
df_data = df_data.rename(columns={df_data.columns[0]: "col2"})

# 将列名所在的dataframe和数据所在的dataframe合并
df_result = pd.concat([df_columns, df_data], ignore_index=True)

# 将结果写入新的Excel文件
df_result.to_excel("output.xlsx", index=False)

示例二:Excel文件的行转列

考虑以下的Excel文件:

|col1  |col2 |col3  |value1|value2|value3|
|------|-----|------|------|------|------|
|001   |002  |003   |A     |B     |C     |
|004   |005  |006   |D     |E     |F     |

我们希望将其转换为如下形式:

|col1|col2|col3|value|
|----|----|----|-----|
| 001| 002| 003| A   |
| 001| 002| 003| B   |
| 001| 002| 003| C   |
| 004| 005| 006| D   |
| 004| 005| 006| E   |
| 004| 005| 006| F   |

使用以下的Python代码可以实现该转换:

import pandas as pd

# 读取原始文件
df = pd.read_excel("input.xlsx")

# 将原始文件的前三列作为"col1", "col2", "col3"
df_columns = df.iloc[:, :3]

# 将原始文件的value列转换为新的dataframe
df_data = pd.melt(df, id_vars=df.columns[:3], value_vars=df.columns[3:], var_name="col4", value_name="value")

# 将"col1", "col2", "col3"和"value"所在的dataframe合并
df_result = pd.concat([df_columns, df_data["value"]], axis=1)

# 将结果写入新的Excel文件
df_result.to_excel("output.xlsx", index=False)

以上示例提供了多行多列的Excel文件的列转行和行转列的Python示例,希望可以帮助到你。