在Python中的For循环每次迭代后创建一个新列

在Python中的For循环每次迭代后创建一个新列,python,pandas,Python,Pandas,我想在python中for循环的每次迭代之后创建一列并将其分配给数据帧 df_xyz = pd.DataFrame() for j in range(0,3): for k in range(j+1,4): print(j,k) 因此,在这种情况下,它应该在数据帧中创建6个新列,名称为ABC1、ABC2…ABC6。这些列将从运行循环中的代码生成的numpy数组中获取值。我的实际代码涉及一些算法,但这里我只是放置相关的代码,我需要帮助 编辑1: 更新代码: z= np.a

我想在python中for循环的每次迭代之后创建一列并将其分配给数据帧

df_xyz = pd.DataFrame()
for j in range(0,3):
    for k in range(j+1,4):
        print(j,k)
因此,在这种情况下,它应该在数据帧中创建6个新列,名称为ABC1、ABC2…ABC6。这些列将从运行循环中的代码生成的numpy数组中获取值。我的实际代码涉及一些算法,但这里我只是放置相关的代码,我需要帮助

编辑1:

更新代码:

z= np.array([1,2,4])
df_xyz = pd.DataFrame()
for j in range(0,3):
    for k in range(j+1,4):
        print(j,k)
        df_xyz = pd.DataFrame(z)  

这只会创建一个新列。

看起来很糟糕,但我认为您正在尝试这样做:

在[1]中: 作为pd进口熊猫 将numpy作为np导入 z=np.数组[1,2,4] df_xyz=pd.DataFrame 迭代器=1 对于范围为0,3的j: 对于范围为J+1,4的k: printj,k col_name='ABC'+striterator df_xyz.loc[:,col_name]=z 迭代器+=1 df 出[1]: ABC1 ABC2 ABC3 ABC4 ABC5 ABC6 0 1 1 1 1 1 1 1 2 2 2 2 2 2 2 4 4 4 4 4 4 您也可以这样做:

在[2]中: 作为pd进口熊猫 将numpy作为np导入 my_cols=['ABC1','ABC2','ABC3','ABC4','ABC5','ABC6'] z=np.数组[1,2,4] df_xyz=pd.DataFrame 对于范围为0,3的j: 对于范围为J+1,4的k: printj,k col\u name=my\u cols[0] 我的歌 df_xyz.loc[:,col_name]=z df 出[2]: ABC1 ABC2 ABC3 ABC4 ABC5 ABC6 0 1 1 1 1 1 1 1 2 2 2 2 2 2 2 4 4 4 4 4 4
联机的许多源(包括on-SO Stack Overflow)向您展示了如何使用现有数据向数据帧添加新列。列名只是保留一个计数器,并将其字符串连接到ABC。你在哪里?可能是重复的我检查了旧的帖子,但在我的情况下,它只是给我看最后一列。这意味着它将覆盖旧列。您需要更新您的解释。您提供的代码有一个空的DafaFrame,并为与数据帧无关的2个循环打印数字,并添加一个column@TomWojcik嗨,汤姆,你能告诉我我的场景在给定的链接中的具体位置吗?我想在for循环中创建列。我知道如何创建一个新列,但不知道如何在dataframe中不断添加列。上面的代码只创建3列。不过,我希望创建6列,因为j值也会从0更改为3,只需稍加编辑即可。在列名称中添加j和k值它只创建了3列,因为只有3个不同的列名称。当该列已存在时,它将更新该列,而不创建另一列。不能有两个同名的列