У меня есть код ниже
Я пытаюсь вставить новые столбцы в определенные позиции с помощью метода insert. Ниже мой код,
import pandas as pd
(pd.DataFrame({'product name': ['laptop', 'printer', 'printer',], 'price': [1200, 150, 1200], 'price1': [1200, 150, 1200]})
.insert(0, 'AAA', -1)
.insert(1, 'BBB', -2)
)
При этом я получаю ошибку ниже,
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'insert'
>>>
Не могли бы вы помочь решить эту ошибку.
Любой указатель высоко ценится.





Метод вставки не возвращает объект dataframe. Вы можете назначить объект dataframe переменной и применить метод вставки к переменной:
df = pd.DataFrame({'product name': ['laptop', 'printer', 'printer',],
'price': [1200, 150, 1200],
'price1': [1200, 150, 1200]})
df.insert(0, 'AAA', -1)
df.insert(1, 'BBB', -2)
Вы также можете использовать соединение, чтобы иметь его в цепочке, но вы должны знать количество строк:
pd.DataFrame({'AAA': [-1] * 3})\
.join(pd.DataFrame({'BBB': [-2] * 3}))\
.join(pd.DataFrame({'product name': ['laptop', 'printer', 'printer', ],
'price': [1200, 150, 1200],
'price1': [1200, 150, 1200]}))
Я отредактировал свой ответ, чтобы применить цепочку, которую вы ищете, но он использует соединение, а не вставку, потому что вставка не возвращает объект.
DataFrame.insert — это операция на месте, которая изменяет исходный фрейм данных и возвращает None. После вызова первой операции insert возвращаемое значение равно None, поэтому следующая insert выдает ошибку, жалуясь на то, что 'NoneType' object has no attribute 'insert'.
df = pd.DataFrame({'product name': ['laptop', 'printer', 'printer',], 'price': [1200, 150, 1200], 'price1': [1200, 150, 1200]})
df.insert(0, 'AAA', -1)
df.insert(1, 'BBB', -2)
df.pipe(lambda x: x.insert(0, 'AAA', -1) or x.insert(1, 'BBB', -2) or x)
Спасибо. Но я ищу способ использовать
insertвchain