如何使用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
相关产品推荐
相关产品推荐

