- 起因
- 问题原因
- 解决方案
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')