如何使用Pandas生成指定范围数值的两列DataFrame并保存?
修正Pandas生成笛卡尔积DataFrame并保存的代码
需求:使用Pandas生成包含指定范围数值的两列DataFrame,给定参数range1=2,range2=3,期望生成的DataFrame格式如下:
1 1 1 2 1 3 2 1 2 2 2 3
你提供的原代码存在问题:每次循环都会创建仅含单行的DataFrame,写入CSV时默认覆盖之前的内容,最终CSV文件里只会保留最后一行(2,3),无法生成所有需要的组合。
以下是两种可行的修正方案:
方案一:先收集所有数据再生成DataFrame
import pandas as pd d1 = 2 d2 = 3 # 提前收集所有(i,j)组合 data_list = [] for i in range(1, d1 + 1): for j in range(1, d2 + 1): data_list.append((i, j)) # 一次性生成完整DataFrame并保存 df = pd.DataFrame(data_list, columns=['proteinA', 'proteinB']) # index=False 用于去掉Pandas默认添加的索引列 df.to_csv('prediction_test_123.csv', index=False)
方案二:用itertools简化笛卡尔积生成
如果想让代码更简洁,可以用itertools.product直接生成两个范围的笛卡尔积:
import pandas as pd from itertools import product d1 = 2 d2 = 3 # 直接生成1~d1和1~d2的所有组合 data = product(range(1, d1 + 1), range(1, d2 + 1)) df = pd.DataFrame(data, columns=['proteinA', 'proteinB']) df.to_csv('prediction_test_123.csv', index=False)
两种方案都能生成符合要求的DataFrame,并且一次性写入CSV,避免了循环覆盖的问题,同时通过index=False保证输出格式和期望一致。
内容的提问来源于stack exchange,提问作者Dr. Krishna Kant Gupta
相关产品推荐
相关产品推荐

