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

如何将列表字符串值添加至DataFrame并重构符合要求的数据集

解决方案

你需要的是将原DataFrame与列表中的每个元素进行笛卡尔积合并,也就是每个列表元素对应原DataFrame的全部行。以下是几种高效实现的方法:

方法1:循环生成子DataFrame后合并(直观易理解)

import pandas as pd

df = pd.DataFrame({'player_id': [298, 118, 108, 109, 168, 198, 116], 
                   'date': ['2018-06-22', '2018-06-23', '2018-07-24', '2018-07-25', 
                            '2019-06-22', '2019-06-25', '2019-07-25'], 
                   'score': [-2, 1, 2, 3, 7, 8, 6]})
L = ['ab','da','Ae','gf']

# 初始化空列表存储每个子DataFrame
dfs = []
for name in L:
    # 复制原DataFrame,添加newName列并赋值当前列表元素
    temp_df = df.copy()
    temp_df['newName'] = name
    dfs.append(temp_df)

# 合并所有子DataFrame
result = pd.concat(dfs, ignore_index=True)
print(result)

方法2:利用笛卡尔积合并(更高效,适合大数据集)

通过创建一个包含列表元素的临时DataFrame,与原DataFrame做无关联列的合并,自动生成笛卡尔积:

import pandas as pd

df = pd.DataFrame({'player_id': [298, 118, 108, 109, 168, 198, 116], 
                   'date': ['2018-06-22', '2018-06-23', '2018-07-24', '2018-07-25', 
                            '2019-06-22', '2019-06-25', '2019-07-25'], 
                   'score': [-2, 1, 2, 3, 7, 8, 6]})
L = ['ab','da','Ae','gf']

# 创建包含列表元素的临时DataFrame
name_df = pd.DataFrame({'newName': L})
# 添加虚拟列用于合并(确保笛卡尔积)
df['key'] = 1
name_df['key'] = 1

# 合并后删除虚拟列
result = pd.merge(df, name_df, on='key').drop('key', axis=1)
print(result)

方法3:利用索引重复赋值(简洁写法)

import pandas as pd

df = pd.DataFrame({'player_id': [298, 118, 108, 109, 168, 198, 116], 
                   'date': ['2018-06-22', '2018-06-23', '2018-07-24', '2018-07-25', 
                            '2019-06-22', '2019-06-25', '2019-07-25'], 
                   'score': [-2, 1, 2, 3, 7, 8, 6]})
L = ['ab','da','Ae','gf']

# 重复原DataFrame len(L)次,然后按顺序赋值newName
result = df.loc[df.index.repeat(len(L))].reset_index(drop=True)
result['newName'] = L * len(df)
print(result)

以上三种方法都能得到你期望的结果,其中方法2和3在处理大型DataFrame时性能更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:37:09