如何在Pandas中创建许多列(如Stata中的循环)?

2024-10-02 06:23:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在熊猫身上复制这个Stata循环:

forvalues i = 1/6 {    
    gen int codeL`i' = L`i'.location_level_2
    gen int codeF`i' = F`i'.location_level_2    
}

如您所见,我想创建这些新列:codeL1 codel2…依此类推,直到我得到codeL6,基于变量location\u level\u2的滞后和超前

在斯塔塔很容易,但由于我刚开始研究熊猫,我不知道。你知道吗

这将是我的尝试:

for i in range(1,7):   
      df[codeLi] = df[location_level_2].shift(i)

for i in range(-1,-7):   
      df[codeLi] = df[location_level_2].shift(i)

Tags: indfforshiftrangelocationlevelint
2条回答

这可能会帮助您:

df=pd.DataFrame([[2,2,2],[1,2,3]])
for i in range(1,6):   
    df['codeL'+str(i)]=df.iloc[:,i]

你很接近一个有效的解决方案!以下是@ALollz评论中的建议:

for i in range(1, 7):
    df[f'codeL{i}'] = df['location_level_2'].shift(i)
    df[f'codeF{i}'] = df['location_level_2'].shift(-i)

注意,结构f'codeL{i}自动格式化范围内的整数。如果出于某种原因想单独创建变量,可以执行new_var = 'codeL' + str(i)。你知道吗

还要注意的是,没有理由对负数范围执行第二个循环,只需将负整数传递给pd.shift。你知道吗

相关问题 更多 >

    热门问题