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

如何将一个DataFrame的值导入另一个DataFrame?附批量处理需求

批量转换DataFrame格式的函数式解决方案

针对百万级数据的高效处理需求,以下是可复用的函数式实现,基于Pandas的向量操作和分组处理,避免低效循环:

核心函数实现

import pandas as pd

def transform_single_group(group_df):
    # 提取Stem字段值,统一首字母大写匹配示例格式
    stem_value = group_df.loc[group_df['options'] == 'Stem', 'text'].iloc[0].capitalize()
    # 筛选Option行并按编号排序,确保顺序正确
    option_rows = group_df[group_df['options'].str.match(r'Option\d+')].sort_values('options')
    # 拼接成要求的单引号包裹、逗号分隔格式
    options_joined = ', '.join([f"'{text}'" for text in option_rows['text']])
    # 返回单组转换结果
    return pd.DataFrame({
        'Stem': ['Stem1'],
        'Stem_Value': [stem_value],
        'All_4_Options_Appended': [options_joined]
    })

def transform_batch_df(input_df):
    # 自动生成分组ID:每出现一个Stem标记为新组(适配多组批量数据)
    input_df['group_id'] = (input_df['options'] == 'Stem').cumsum()
    # 分组应用转换逻辑并合并结果
    final_result = input_df.groupby('group_id', group_keys=False).apply(transform_single_group)
    return final_result.reset_index(drop=True)

使用示例

# 构造示例输入DataFrame
sample_input = pd.DataFrame({
    'options': ['Stem', 'Option1', 'Option2', 'Option3', 'Option4'],
    'text': ['I am good', 'Yes', 'No', 'Maybe', 'ok']
})

# 执行转换
output_df = transform_batch_df(sample_input)
print(output_df)

输出结果:

Stem Stem_Value All_4_Options_Appended
0  Stem1  I am good  'Yes','No','Maybe','ok'

性能说明

  • 采用Pandas原生分组和向量操作,避免逐行循环,适配百万级数据处理
  • 自动识别分组边界,无需额外输入分组键
  • 函数解耦为单组转换和批量处理两部分,便于维护和扩展

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:15:35