如何将一个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
相关产品推荐
相关产品推荐

