如何用Python嵌套循环生成指定顺序的DataFrame?
解决DataFrame按指定规则组合的问题
你原来的循环逻辑顺序错了,外层遍历F会导致每个F元素后跟着所有P+A的组合,完全不符合你要的一一对应关系。下面给你两种可行的解决方案:
方法一:调整循环逻辑
正确的思路是先遍历每个P元素,每个P下再遍历A的3个元素,同时按顺序取F中对应的元素,每次把一组(F, P, A)添加到列表中:
import pandas as pd # 示例数据,替换成你的真实列表 F = [f"F{i}" for i in range(9)] P = [f"P{i}" for i in range(3)] A = [f"A{i}" for i in range(3)] df_test3 = [] f_idx = 0 # 遍历每个P元素 for p_val in P: # 每个P对应3个A元素 for a_val in A: # 取当前对应的F元素,组成一组添加 df_test3.append([F[f_idx], p_val, a_val]) f_idx += 1 # 转换为DataFrame result_df = pd.DataFrame(df_test3, columns=["F", "P", "A"]) print(result_df)
方法二:直接构造DataFrame(更高效)
不用写循环,利用numpy的重复/平铺函数直接生成对应列,再创建DataFrame,代码更简洁高效:
import pandas as pd import numpy as np # 示例数据,替换成你的真实列表 F = [f"F{i}" for i in range(9)] P = [f"P{i}" for i in range(3)] A = [f"A{i}" for i in range(3)] result_df = pd.DataFrame({ "F": F, # 每个P元素重复3次 "P": np.repeat(P, 3), # A列表整体重复3次 "A": np.tile(A, 3) }) print(result_df)
两种方法都会生成你需要的表格结构,第二种方法更适合处理大规模数据,避免手动循环的冗余。
内容的提问来源于stack exchange,提问作者Laura
相关产品推荐
相关产品推荐

