如何单行嵌套双层for循环生成指定结构的pandas DataFrame
你需要的单行嵌套双层for循环实现代码如下:
import pandas as pd # 原有求和函数 def sum(a,b): s = a+b return s # 单行生成目标DataFrame df = pd.DataFrame([(a, b, sum(a,b)) for a in range(1,10) for b in range(100,200)], columns=['A', 'B', 'Sum'])
上述写法的逻辑和你写的普通双层for循环完全一致:列表推导式中外层循环写在靠前位置,内层循环写在靠后位置,每次迭代返回包含A值、B值、求和结果的三元组,即可生成所有A、B值两两匹配的笛卡尔积结构,完全符合你需要的输出格式。
如果数据量级较大,更推荐使用pandas原生的笛卡尔积实现,性能优于列表推导式循环:
df_a = pd.DataFrame({'A': range(1,10)}) df_b = pd.DataFrame({'B': range(100,200)}) df = df_a.merge(df_b, how='cross') df['Sum'] = df['A'] + df['B']
内容的提问来源于stack exchange,提问作者Kathan Vyas
相关产品推荐
相关产品推荐

