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

如何用Pandas将DataFrame与列表合并并复制对应记录

解决方案

你可以通过生成两个数据集的笛卡尔积来实现需求,以下是几种简洁的pandas实现方式:

方法1:使用merge(how='cross')(推荐,pandas 1.2.0+)

这是最直观的方式,直接对原DataFrame和银行列表生成的DataFrame做交叉连接:

import pandas as pd

# 原DataFrame
df = pd.DataFrame({'Date': ['2022-10-22', '2022-10-21', '2022-10-20']})
# 银行列表转为DataFrame
banks_df = pd.DataFrame({'Bank': ['NAB', 'CBA']})

# 交叉合并得到结果
result = df.merge(banks_df, how='cross')

方法2:兼容旧版本pandas(无cross选项)

通过添加临时辅助列实现笛卡尔积:

import pandas as pd

df = pd.DataFrame({'Date': ['2022-10-22', '2022-10-21', '2022-10-20']})
# 添加临时key列
df['key'] = 1
banks_df = pd.DataFrame({'Bank': ['NAB', 'CBA'], 'key': 1})

# 合并后删除临时列
result = df.merge(banks_df, on='key').drop('key', axis=1)

方法3:使用assign+explode

通过为每行分配银行列表,再展开实现:

import pandas as pd

df = pd.DataFrame({'Date': ['2022-10-22', '2022-10-21', '2022-10-20']})

# 为每个Date分配银行列表,再展开
result = df.assign(Bank=[['NAB', 'CBA']]*len(df)).explode('Bank')

运行任意一种方法后,result都会得到你需要的DataFrame:

Date Bank
0  2022-10-22  NAB
1  2022-10-22  CBA
2  2022-10-21  NAB
3  2022-10-21  CBA
4  2022-10-20  NAB
5  2022-10-20  CBA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:15:55