使用 pandas 数据帧生成错误的插入方法插入列
Inserting column with insert method of pandas dataframe generating error
我有以下代码
我正在尝试使用 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'
>>>
能否请您帮忙解决这个错误。
非常感谢任何指点。
insert 方法不return 数据框对象。您可以将数据框对象分配给变量并将插入方法应用于变量:
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)
您也可以使用 join 将其包含在链中,但您必须知道行数:
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
是 inplace 操作,它修改原始数据帧和 returns None
。在调用第一个 insert
操作后,return 值为 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)
Hacky 解决方案
df.pipe(lambda x: x.insert(0, 'AAA', -1) or x.insert(1, 'BBB', -2) or x)
我有以下代码
我正在尝试使用 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'
>>>
能否请您帮忙解决这个错误。
非常感谢任何指点。
insert 方法不return 数据框对象。您可以将数据框对象分配给变量并将插入方法应用于变量:
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)
您也可以使用 join 将其包含在链中,但您必须知道行数:
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
是 inplace 操作,它修改原始数据帧和 returns None
。在调用第一个 insert
操作后,return 值为 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)
Hacky 解决方案
df.pipe(lambda x: x.insert(0, 'AAA', -1) or x.insert(1, 'BBB', -2) or x)