如何在Pandas DataFrame中生成符合指定规则的列数据?
正确解决方案
原代码问题分析
你的测试代码存在几个关键问题:
- 每次循环都会创建仅包含一行数据的DataFrame,且通过
to_csv直接覆盖文件,最终只会保留最后一次循环的结果 - 变量
d1=6、d2=8和需求中的a=2、b=3完全不匹配,循环范围错误 - 创建DataFrame的方式错误,
pd.DataFrame((i,j), columns=...)的写法会导致数据结构不符合列要求
方法一:列表推导式生成数据
直接生成符合规则的列数据,再创建DataFrame:
import pandas as pd a = 2 b = 3 # 生成Column A的数据:1到a每个数重复b次 col_a = [num for num in range(1, a+1) for _ in range(b)] # 生成Column B的数据:1到b重复a次 col_b = list(range(1, b+1)) * a # 创建目标DataFrame df = pd.DataFrame({ 'Column A': col_a, 'Column B': col_b }) # 保存到CSV(如需) df.to_csv('prediction_test_123.csv', index=False)
方法二:利用MultiIndex生成(更简洁)
通过pd.MultiIndex.from_product生成笛卡尔积,快速转换为目标结构:
import pandas as pd a = 2 b = 3 # 生成1到a、1到b的笛卡尔积索引 multi_index = pd.MultiIndex.from_product( [range(1, a+1), range(1, b+1)], names=['Column A', 'Column B'] ) # 转换为DataFrame并重置索引 df = multi_index.to_frame(index=False) # 保存到CSV(如需) df.to_csv('prediction_test_123.csv', index=False)
两种方法运行后都会生成你需要的表格结构:
| Column A | Column B |
|---|---|
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 2 |
| 2 | 3 |
内容的提问来源于stack exchange,提问作者Dr. Krishna Kant Gupta
相关产品推荐
相关产品推荐

