AttributeError: 'NoneType' object has no attribute 'append',列表list和dataframe使用append的返回值

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

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')

2019/9/29更新:
最近使用numpy时发现数组array追加时的特性,与list不同,与dataframe相似,特此增加。

import numpy as np
array_1 = np.array([1,3,4])
array_1 = np.append(array_1,1000)
print(array_1)

结果如下:

[   1    3    4 1000]

ok,总结到这里。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值