如何在熊猫循环中创建索引列名称

时间:2019-04-02 17:00:20

标签: python pandas

我需要创建一个函数来自动为新数据集分配许多新列名。

原因是我需要某种方式将我的预测绑定到我的初始数据集。 Sklearn没有任何简便的方法。

我已经尝试创建一个函数,但是它只会显示一个错误:

ValueError:传递的值的形状为(1440,90),索引暗示(1440,1)

这意味着在定义新的列名时,我没有正确使用该函数。

def column_printing(x):
    i=0
    for i in range(x):
        print('prediction', i+1)
        i+1
resultTestDataset = pd.DataFrame(y_test, columns=[column_printing(predict_length)])

让我们这样说:

predict_length = 3
y_test = [5,6,7],
         [3,2,1]

我想要一个看起来如下的数据框:

prediction1, prediction2, prediction3
5,6,7 
3,2,1

2 个答案:

答案 0 :(得分:1)

如果我可以假设您的y_testnumpy array

您可以使用以下内容:

predict_length = 3
y_test = np.reshape(np.array([5,6,7,3,2,1]), (2,3))

df = pd.DataFrame(y_test, columns=['predicition{}'.format(x+1) for x in range(predict_length)])

print(df)
   predicition1  predicition2  predicition3
0             5             6             7
1             3             2             1

如果您的python版本> = 3.6,我们可以使用f-strings

predict_length = 3
y_test = np.reshape(np.array([5,6,7,3,2,1]), (2,3))

df = pd.DataFrame(y_test, columns=[f'predicition{x+1}' for x in range(predict_length)])

print(df)
   predicition1  predicition2  predicition3
0             5             6             7
1             3             2             1

答案 1 :(得分:0)

这将帮助

# a simple function to do the column name creation
column_print = lambda col_len : ['prediction' + str(i+1) for i in range(col_len)]

y_test = [5,6,7],[3,2,1]
y_test = np.array(y_test) # convert y_test to a numpy array so you can use the shape 
#method
size_y = y_test.shape
resultTestDataset = pd.DataFrame(y_test, columns=column_print(size_y[1]))
print(resultTestDataset)