如何将df1的agent_code按指定行数分配至df2生成df3?
将agent_code分配到df2指定行生成df3的解决方案
以下是几种常见场景下的实现方案,你可以根据实际数据结构调整:
场景1:根据行号范围分配agent_code
如果df1包含agent_code以及需要分配到df2的起始/结束行号:
import pandas as pd # 示例数据 df1 = pd.DataFrame({ 'agent_code': ['A001', 'A002', 'A003'], 'start_row': [0, 3, 5], 'end_row': [2, 4, 6] }) df2 = pd.DataFrame({ 'data': ['val1', 'val2', 'val3', 'val4', 'val5', 'val6', 'val7'] }) # 初始化df3并填充agent_code df3 = df2.copy() df3['agent_code'] = None for _, row in df1.iterrows(): df3.loc[row['start_row']:row['end_row'], 'agent_code'] = row['agent_code']
场景2:通过匹配键分配agent_code
如果df1和df2存在共同的匹配字段(如group_id),可通过关联匹配分配:
import pandas as pd # 示例数据 df1 = pd.DataFrame({ 'group_id': [1, 2, 3], 'agent_code': ['A001', 'A002', 'A003'] }) df2 = pd.DataFrame({ 'group_id': [1,1,1,2,2,3,3], 'data': ['val1', 'val2', 'val3', 'val4', 'val5', 'val6', 'val7'] }) # 关联生成df3 df3 = df2.merge(df1, on='group_id', how='left')
场景3:按固定行数循环分配agent_code
如果需要将df1的agent_code按顺序循环分配给df2的每N行:
import pandas as pd # 示例数据 df1 = pd.DataFrame({'agent_code': ['A001', 'A002', 'A003']}) df2 = pd.DataFrame({'data': ['val1','val2','val3','val4','val5','val6','val7']}) # 设定每个agent_code分配的行数 n_rows_per_agent = 2 # 生成循环分配的agent_code列表 agent_list = df1['agent_code'].repeat(n_rows_per_agent).tolist() # 补充不足的行数 agent_list += [agent_list[-1]] * (len(df2) - len(agent_list)) df3 = df2.copy() df3['agent_code'] = agent_list
内容的提问来源于stack exchange,提问作者Fred
相关产品推荐
相关产品推荐

