Ошибка вставки серии Panda отсутствует позиционный аргумент и не соответствует длине индекса - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть список, к которому я пытаюсь добавить значение, но я не уверен, как лучше всего это сделать.Я читал, что .insert() является лучшим методом, но после попытки двух разных вариантов метода, я не могу заставить его работать.

Я пытался

df_full_modified = df_full['date', 'b_clicks', 'b_cpc'].insert(0, ['date', 'b_clicks', 'b_cpc'])

который возвращает

TypeError: insert() missing 1 required positional argument: 'value'

, а также попытался добавить значение для параметра columns

df_full_modified = df_full['date', 'b_clicks', 'b_cpc'].insert(0, ['date', 'b_clicks', 'b_cpc'], ['date', 'b_clicks', 'b_cpc'])

, который возвращает

ValueError: Length of values does not match length of index

Я что-то упустил при попыткесопоставить массив методу insert()?

Вот формат фрейма данных df_full:

[['2018-01-01', '72', 2.43], ['2018-01-02', '232', 2.8], ['2018-01-03', '255', 2.6], ...

, и я пытаюсь добавить ['date', 'b_clicks', 'b_cpc'], чтобы сделать его

[['date', 'b_clicks', 'b_cpc'], ['2018-01-01', '72', 2.43], ['2018-01-02', '232', 2.8], ['2018-01-03', '255', 2.6], ...

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

IIUC у вас уже есть df, подобный этому:

          date  b_clicks  b_cpc
0  2018-01-01'        72   2.43
1  2018-01-02'       232   2.80
2  2018-01-03'       255   2.60

И вы хотите вставить строку в начало.df.insert вставляет столбец в указанной позиции, а не в строку.Похоже, вы понимаете, что вы можете сделать это со списком, так что вы можете просто выполнить ту же самую операцию, создав новый список со словами, которые вы указали, и просто соединить df, который у вас уже есть, с новым списком:

data = []
data.insert(0, {'date': 'date', 'b_clicks': 'b_clicks', 'b_cpc': 'b_cpc'})

df_full_modified = pd.concat([pd.DataFrame(data), df], ignore_index=True)

вывод:

>>> df_full_modified
   b_clicks  b_cpc         date
0  b_clicks  b_cpc         date
1        72   2.43  2018-01-01'
2       232    2.8  2018-01-02'
3       255    2.6  2018-01-03'
0 голосов
/ 14 декабря 2018

Если я правильно понимаю вашу первоначальную точку зрения, то предоставленные списки сохраняются в серии панд, например:

a = pd.Series([['2018-01-01', '72', 2.43], ['2018-01-02', '232', 2.8], ['2018-01-03', '255', 2.6]])

Если да, то вы можете просто создать серию для переменной ['date', 'b_clicks', 'b_cpc'],например:

b = pd.Series({['date', 'b_clicks', 'b_cpc']])

и, наконец, добавьте b с помощью a:

b = b.append(a)

Однако при таком подходе вам потребуется 0 единиц в начале ряда.Я не знаю, беспокоит ли это вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...