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

如何将所有以rf开头的数组列拆分为单独列?

问题描述

表1:

rf_1rf_2
['abc','a']['abce','cde']
['abc','cde']['1','2']

如何将所有以rf开头的列拆分为单独的列?

最终输出应如下所示:

rf_1arf_1brf_2arf_2b
'abc''a''abce''cde'
'abc''cde'12

解决方案(基于Python Pandas)

步骤1:处理数据格式

首先要把列中字符串形式的列表转为实际的列表对象:

import pandas as pd
import ast

# 构造原始数据
df = pd.DataFrame({
    'rf_1': ["['abc','a']", "['abc','cde']"],
    'rf_2': ["['abce','cde']", "['1','2']"]
})

# 解析字符串为列表
df['rf_1'] = df['rf_1'].apply(ast.literal_eval)
df['rf_2'] = df['rf_2'].apply(ast.literal_eval)

步骤2:拆分指定列并重组

筛选出所有以rf开头的列,将每个列的列表拆分为独立列,按原列名+a/b命名:

# 筛选目标列
rf_columns = [col for col in df.columns if col.startswith('rf')]

# 拆分并合并结果
final_df = pd.DataFrame()
for col in rf_columns:
    # 将列表拆分为两列,命名规则:原列名+a、原列名+b
    split_df = pd.DataFrame(df[col].tolist(), columns=[f"{col}a", f"{col}b"])
    final_df = pd.concat([final_df, split_df], axis=1)

# 转换数值类型(可选)
final_df['rf_2a'] = pd.to_numeric(final_df['rf_2a'], errors='ignore')
final_df['rf_2b'] = pd.to_numeric(final_df['rf_2b'], errors='ignore')

最终结果

运行代码后,final_df的输出与目标表格一致:

rf_1a rf_1b rf_2a rf_2b
0  abc     a  abce  cde
1  abc   cde     1     2

通用适配(列表长度不固定时)

如果列中列表长度不一致,可改用动态命名方式:

final_df = pd.DataFrame()
for col in rf_columns:
    split_df = pd.DataFrame(df[col].tolist()).add_prefix(f"{col}_")
    final_df = pd.concat([final_df, split_df], axis=1)

此时列名将变为rf_1_0、rf_1_1、rf_2_0这类格式,适配任意长度的列表。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:57:50