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

如何使用Pandas的assign方法简洁实现字符串拆分生成多列?

用DataFrame.assign简洁拆分货币对列

给定如下DataFrame:

import pandas as pd

df_so = pd.DataFrame.from_dict({
    0: 'gbp_usd',
    1: 'eur_usd',
    2: 'usd_cad',
    3: 'usd_jpy',
    4: 'eur_usd',
    5: 'eur_usd'
}, orient='index', columns=["ccy"])

原本通过df_so[['base_ccy', 'quote_ccy']] = df_so['ccy'].str.split('_', 1, expand=True)拆分生成新列,现在要在自定义tweak_df函数中用assign方法实现相同效果,这里提供两种简洁方案:

方案一:紧凑链式写法

直接在assign中通过str.split结合索引提取拆分后的元素,代码紧凑直观:

def tweak_df(df):
    return df.assign(
        base_ccy=lambda x: x['ccy'].str.split('_').str[0],
        quote_ccy=lambda x: x['ccy'].str.split('_').str[1]
    )

方案二:高效一次性拆分

如果数据量较大,先一次性完成拆分再分配列,避免重复调用split提升效率:

def tweak_df(df):
    # 一次性拆分并展开为临时DataFrame
    split_result = df['ccy'].str.split('_', expand=True)
    return df.assign(
        base_ccy=split_result[0],
        quote_ccy=split_result[1]
    )

调用函数后即可得到包含base_ccy和quote_ccy列的处理后DataFrame,两种方案都能替代原有写法,且符合assign的链式操作风格,适合在数据清洗函数中保持代码流畅性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:20:32