You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Pandas将表格数据转为列格式以导入数据库?支持Excel方法

嘿,我来帮你搞定这个格式转换的问题!不管用Python Pandas还是Excel都能轻松实现,下面分别给你详细步骤:

用Python Pandas实现

首先先明确需求:把类似这样的宽表结构(每列对应一个日期,行是维度项):

名称2023-012023-022023-03
A100150200
B8090120

转换成适合数据库导入的长表格式(每行对应一个维度+日期+数值的组合):

名称日期数值
A2023-01100
A2023-02150
A2023-03200
B2023-0180
B2023-0290
B2023-03120

具体代码操作步骤:

  1. 导入Pandas并读取原始数据(这里假设你用Excel存储数据):
import pandas as pd

# 读取Excel文件,确保表头是第一行
df = pd.read_excel("你的原始数据文件名.xlsx")
  1. 使用melt函数完成宽表转长表:
# id_vars:指定不需要被转换的维度列(比如示例里的"名称",按你的实际列名修改)
# var_name:转换后日期列的名称
# value_name:转换后数值列的名称
transformed_df = df.melt(
    id_vars=["名称"],
    var_name="日期",
    value_name="数值"
)

如果还有其他不需要转换的维度列,直接加到id_vars的列表里就行,比如id_vars=["名称", "类别"]

  1. 导出为适合数据库导入的格式(比如CSV):
# index=False是去掉默认的行索引,避免导入数据库时多出无用列
transformed_df.to_csv("转换后的数据.csv", index=False, encoding="utf-8")

用Excel实现

如果你更习惯用Excel操作,可以借助Power Query快速完成,步骤如下:

  1. 选中你的原始数据区域,点击顶部「数据」选项卡 → 「从表格/区域」(弹出对话框时,确认勾选“我的表格有标题”)。
  2. 进入Power Query编辑器后,选中所有需要转换的日期列(比如2023-01、2023-02这类列)。
  3. 点击顶部「转换」选项卡 → 「逆透视列」→ 选择「逆透视列」(如果有不需要转换的维度列,选「逆透视其他列」更高效)。
  4. 此时你会看到自动生成的「属性」和「值」列,右键点击列名重命名为「日期」和「数值」。
  5. 点击顶部「关闭并上载」,转换好的长表就会出现在新的工作表里,你可以直接复制或者另存为CSV用于数据库导入。

内容的提问来源于stack exchange,提问作者Chelseajcole

火山引擎 最新活动