__init __()从1到6个位置参数,但给出了11个

时间:2019-03-18 15:27:15

标签: python pandas dataset

请帮助菜鸟解决问题。

我有2个用str变量填充的列表:

crops = ['Кук зер', 'Подсол', 'Пшен оз', 'Сах св', 'Соя', 'Ячм оз', 'Ячм яр']

clusters = ['Восток', 'Восток_2', 'Курск', 'Север', 'Центр', 'Юг', 
            'Юг_Краснодар', 'Юг_Ставрополь', 'Агросервис']

然后我要与他们建立一个简单的熊猫数据集:

import pandas as pd
begrow = pd.DataFrame({'Crops': crops},
                       {clusters[0]: [2, 232, 503, 2442, 3858, '#Н/Д', 4706]},
                       {clusters[1]: [10, 259, 773, 2620, 3956, '#Н/Д', 4788]},
                       {clusters[2]: [13, 275, 900, 2754, 3961, '#Н/Д', 4843]},
                       {clusters[3]: [37, 313, 1446, 3085, 4171, '#Н/Д', 5039]},
                       {clusters[4]: [90, 322, 1647, 3207, 4285, '#Н/Д', 5090]},
                       {clusters[5]: [114, 360, 1810, 3293, 4351, '#Н/Д', 5155]},
                       {clusters[6]: [140, '#Н/Д', 2171, 3546, 4472, 4592, '#Н/Д']},
                       {clusters[7]: [187, 489, 2341, 3764, 4582, 4695, '#Н/Д']},
                       {clusters[8]: ['#Н/Д', 230, 490, 2421, 3811, '#Н/Д', 4704]})

print(begrow)

但是Spyder返回以下错误:

TypeError: __init__() takes from 1 to 6 positional arguments but 11 were given

如何解决?

1 个答案:

答案 0 :(得分:4)

错误__init__() takes from 1 to 6 positional arguments but 11 were given表示DataFrame构造函数最多接受6个不同的参数,并且将其喂入11个。

每组{}在Python中创建一个单独的字典,这不是您想要的。如果您删除除起始{}和结束{之外的所有},请按照以下步骤操作:

begrow = pd.DataFrame({'Crops': crops,
                   clusters[0]: [2, 232, 503, 2442, 3858, '#Н/Д', 4706],
                   clusters[1]: [10, 259, 773, 2620, 3956, '#Н/Д', 4788],
                   clusters[2]: [13, 275, 900, 2754, 3961, '#Н/Д', 4843],
                   clusters[3]: [37, 313, 1446, 3085, 4171, '#Н/Д', 5039],
                   clusters[4]: [90, 322, 1647, 3207, 4285, '#Н/Д', 5090],
                   clusters[5]: [114, 360, 1810, 3293, 4351, '#Н/Д', 5155],
                   clusters[6]: [140, '#Н/Д', 2171, 3546, 4472, 4592, '#Н/Д'],
                   clusters[7]: [187, 489, 2341, 3764, 4582, 4695, '#Н/Д'],
                   clusters[8]: ['#Н/Д', 230, 490, 2421, 3811, '#Н/Д', 4704]})

然后将所有数据组合成单个 dict,并输出我认为您要查找的内容:

print(begrow)

runfile('/home/master/.config/spyder-py3/temp.py', wdir='/home/master/.config/spyder-py3')
 Crops Восток Восток_2 Курск Север Центр    Юг Юг_Краснодар Юг_Ставрополь Агросервис
0  Кук зер      2       10    13    37    90   114          140           187       #Н/Д
1   Подсол    232      259   275   313   322   360         #Н/Д           489        230
2  Пшен оз    503      773   900  1446  1647  1810         2171          2341        490
3   Сах св   2442     2620  2754  3085  3207  3293         3546          3764       2421
4      Соя   3858     3956  3961  4171  4285  4351         4472          4582       3811
5   Ячм оз   #Н/Д     #Н/Д  #Н/Д  #Н/Д  #Н/Д  #Н/Д         4592          4695       #Н/Д
6   Ячм яр   4706     4788  4843  5039  5090  5155         #Н/Д          #Н/Д       4704