pandas.Series.drop方法执行后未生效 输出与预期不符问题咨询
问题原因
pandas的drop()方法默认不会修改原对象,只会返回一个执行完删除操作的新对象,你没有将执行结果赋值给变量,原Seriess没有发生任何改变,因此打印时还是完整的原始数据。- 输出的dtype和官方示例不一致是系统环境差异导致的:Windows系统下
numpy.arange()默认生成的整数类型为int32,macOS/Linux系统下默认生成int64,不属于代码错误。
解决方法
方案1(推荐):将drop后的结果赋值给变量
import pandas as pd import numpy as np s = pd.Series(data=np.arange(3), index=['A', 'B', 'C']) # 赋值给新变量,也可以直接覆盖原变量s = s.drop(labels=['B', 'C']) s_new = s.drop(labels=['B', 'C']) print(s_new)
方案2:指定inplace参数原地修改(不推荐,官方已计划废弃该类参数)
s = pd.Series(data=np.arange(3), index=['A', 'B', 'C']) s.drop(labels=['B', 'C'], inplace=True) print(s)
如果需要和官方示例的int64类型保持一致,生成数组时指定dtype即可:
s = pd.Series(data=np.arange(3, dtype='int64'), index=['A', 'B', 'C'])
内容的提问来源于stack exchange,提问作者Seanmamasde
相关产品推荐
相关产品推荐

