AttributeError: 'NoneType' object has no attribute 'append',列表list和dataframe使用ap

  • 起因
  • 问题原因
  • 解决方案

1.起因
经常对dataframe进行操作,免不了添加操作。一般使用
df = df.append(df_save),没啥问题。
但对列表使用append时出现错误:

#错误示范
>>>list = []
>>>list = list.append('a')
>>>print(list)
AttributeError: 'NoneType' object has no attribute 'append'

错误码

AttributeError: ‘NoneType’ object has no attribute 'append‘

其实提示很清楚,NoneType格式没有append方法。但是很奇怪,原来空的dataframe也能添加啊,比如:

print(data)
>>>
        A   B    C
0       1   2  3.0
1       a   b  NaN
2  (1, 2)  ab  3.0

import pandas as pd
df = pd.DataFrame()
print(df)
>>>
Empty DataFrame
Columns: []
Index: []

df = df.append(data)
print(df)
>>>
        A   B    C
0       1   2  3.0
1       a   b  NaN
2  (1, 2)  ab  3.0

2.问题原因
在这篇文章中找到答案https://www.jianshu.com/p/42fd50c36a5c
原来是append方法用在dataframe和list上有不同的返回参数

>>>type(df.append(data))
 pandas.core.frame.DataFrame
 >>>list = [1]
 >>>type(list.append('2'))
 NoneType

问题就是list.append方法返回NoneType。至于更进一步的为什么,有待探究。

3.解决方案
①对于dataframe,还是要采取下面的形式

df = df.append(data)

这样才能对df进行添加赋值,读者可以试一下,只用df.append(data)不能改变df的内存值。

②对于list,直接使用append方法,能够直接改变内存值。使用赋值的语法形式反而会报错。

list.append('1')
上一篇:当函数返回None或引发异常时,使用Python的默认值的方法是什么?


下一篇:为什么append()总是在Python中返回None?