You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中动态将DataFrame列拆分为多行?

Pandas宽表转长表:拆分列生成多行数据

没问题,我来帮你搞定这个需求!你现在需要把每行包含多列数据的DataFrame,拆分成每列对应一行的新数据,这在Pandas里属于宽表转长表的典型场景,用melt()函数就能轻松实现。

第一步:先明确你的数据结构

先给你构造一个和你描述匹配的示例DataFrame,方便你对照:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'institution_short_name': ['Bank of Demo', 'Demo Credit Union'],
    'interest_paid1': [1.25, 1.48],
    'interest_paid2': [1.32, 1.55],
    'product_detail_value_min': [500, 1000],
    'term_01m_value': [2.1, 2.3],
    'term_02y_value': [3.6, 3.8],
    'term_03m_value': [2.6, 2.8]
})

第二步:用melt()实现列转行

我们需要指定哪些列是保留的标识符列(比如institution_short_name和product_detail_value_min,这些列的值不需要拆分,会跟着每一行新数据保留),哪些是需要拆分的列,同时自定义新生成的列名:

# 执行宽表转长表操作
melted_df = df.melt(
    # 保留的标识符列,这些列的值会重复出现在每一行新数据中
    id_vars=['institution_short_name', 'product_detail_value_min'],
    # 新生成的“原列名”对应的列名
    var_name='metric_category',
    # 新生成的“原列值”对应的列名
    value_name='metric_value'
)

如果你只想拆分特定列(比如只拆interest_paid系列),可以加上value_vars=['interest_paid1', 'interest_paid2']参数指定目标列,默认会拆分所有非id_vars的列。

第三步:看转换后的结果

转换后的melted_df会变成这样的结构(简化展示):

institution_short_nameproduct_detail_value_minmetric_categorymetric_value
Bank of Demo500interest_paid11.25
Demo Credit Union1000interest_paid11.48
Bank of Demo500interest_paid21.32
Demo Credit Union1000interest_paid21.55
Bank of Demo500term_01m_value2.1
............

可选:拆分不同类型的列(如果需要分开处理)

如果你想把interest_paid系列和term系列分开拆分,再合并成更细致的结构,可以这么做:

# 单独拆分interest_paid列
interest_df = df.melt(
    id_vars=['institution_short_name', 'product_detail_value_min'],
    value_vars=['interest_paid1', 'interest_paid2'],
    var_name='interest_paid_index',
    value_name='interest_amount'
)

# 单独拆分term列
term_df = df.melt(
    id_vars=['institution_short_name', 'product_detail_value_min'],
    value_vars=['term_01m_value', 'term_02y_value', 'term_03m_value'],
    var_name='term_type',
    value_name='term_rate'
)

# 合并两个表,得到每个机构+产品最小值对应的所有利息和期限组合
merged_df = pd.merge(interest_df, term_df, on=['institution_short_name', 'product_detail_value_min'])

这样就能根据你的具体需求灵活调整拆分方式啦!

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:43:22