__init __ () принимает от 1 до 6 позиционных аргументов, но было дано 11 - PullRequest
0 голосов
/ 18 марта 2019

Пожалуйста, помогите Нубу решить проблему.

я получил 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 Ответ

4 голосов
/ 18 марта 2019

Ошибка __init__() takes from 1 to 6 positional arguments but 11 were given означает, что конструктор DataFrame принимает не более 6 различных аргументов, и вы указали его 11.

Каждый набор {} создает в Python отдельный dict, а это не то, что выхочу.Если вы удалите все {} за исключением начального { и завершающего }, например, так:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...