在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)
这只会创建一次新列。
答案 0 :(得分:1)
它看起来确实很糟糕,但是我认为您正在尝试这样做:
In [1]:
import pandas as pd
import numpy as np
z= np.array([1,2,4])
df_xyz = pd.DataFrame()
iterator = 1
for j in range(0,3):
for k in range(j+1,4):
print(j,k)
col_name = 'ABC' + str(iterator)
df_xyz.loc[:, col_name] = z
iterator += 1
df
Out [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
您也可以执行以下操作:
In [2]:
import pandas as pd
import numpy as np
my_cols = ['ABC1', 'ABC2', 'ABC3', 'ABC4', 'ABC5', 'ABC6']
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)
col_name = my_cols[0]
my_cols.pop(0)
df_xyz.loc[:, col_name] = z
df
Out [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