首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python DataFrame:如果我改变了索引,为什么我的值变成了NaN?

在Python中,DataFrame是pandas库中的一个重要数据结构,用于处理和分析结构化数据。当你改变DataFrame的索引时,可能会导致原来的值变成NaN(Not a Number)的原因有以下几种可能性:

  1. 索引对齐:当你改变索引时,DataFrame会尝试根据新索引对齐数据。如果新索引中存在原索引中没有的值,那么对应的数据将会变成NaN。这是因为DataFrame默认会进行索引对齐操作,确保数据的一致性。
  2. 重置索引:如果你使用了reset_index()方法来重置索引,那么原来的索引将会被转换为一列新的数据,并且新的索引将会被自动生成。由于新的索引与原来的索引不一致,所以原来的值会变成NaN。
  3. 重新索引:如果你使用了reindex()方法来重新索引DataFrame,那么原来的索引将会被替换为新的索引。如果新的索引中存在原索引中没有的值,那么对应的数据将会变成NaN。

为了避免值变成NaN,你可以采取以下措施:

  1. 在改变索引之前,先对DataFrame进行备份,以便需要时可以恢复原始数据。
  2. 在改变索引时,使用参数drop=False来保留原来的索引作为一列数据。
  3. 在重新索引时,使用参数fill_value来指定缺失值的替代值,而不是使用默认的NaN。

总结起来,当你改变DataFrame的索引时,原来的值变成NaN是因为索引对齐或重置索引导致的。为了避免这种情况,你可以备份数据、保留原索引作为一列数据,或者指定缺失值的替代值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

统计师Python日记【第5天:Pandas,露两手】

上一集开始学习了Pandas数据结构(Series和DataFrame),以及DataFrame一些基本操作:改变索引名、增加一列、删除一列、排序。 今天将继续学习Pandas。...特别注意是缺失情况! 如果有缺失,比如四个数值2,3,1,NaN,那么加总结果是2+3+1+NaN=6,也就是缺失自动排除掉了!...解决办法是指定 skipna=False,有缺失将不可加总: >>>df=DataFrame([[1.4, np.nan], [7.1, -4.5], [np.nan, np.nan], [0.75...,单一层次索引如果索引为亚洲-中国-各个省-各个市,变量为人口,这就是典型层次化索引。...变量名变成了0、1,还是扭啊,我们来指定个变量吧: ? 用 names= 可以指定变量名。 看到var1那列,如果想用这列做索引,咋办?好办! ? 用 index_col= 即可指定索引

3K70

小蛇学python(8)pandas库之DataFrame

我们之前使用NumPy数组传入如果我们传入列在数据中找不到,表格就会自动生成NA,表示这里为空。...3.png 我们可以看到,在是否有女朋友那一栏全部自动生成了NaN, 表示这一列数据为空。这里我们也可以得到启发,就是表格index(索引)也是可以改变,不一定就非要是数字。比如。...5.png 可当我们把索引代码稍微一下,程序就会报错。 frame = frame.iloc[2:3, '是否有女朋友'] ? 6.png 这是因为索引为数字,而列索引是字符串导致。...以上,是DataFrame最简单应用,看完博客后读者可以自行发挥想象,组合出不同使用方式。但是万不离其宗,彻底理解最基础操作,才是最重要,而且最基础操作其实都很简单。...10.png 数组里每个元素都比原来少了1,这个功能出现使得python更加灵活。其实对它最大感悟就是,它使得在for循环时解决索引溢出问题方便多了。 表格也可以进行广播操作。

1.1K20
  • Python替代Excel Vba系列(三):pandas处理不规范数据

    注意索引是从0开始算。 values=arr[3:],从第4行往后一大片作为。 pd.DataFrame(values,columns=header) , 生成一个 DataFrame 。....replace(['/','nan'],np.nan),把读取进来有些无效替换为 nan,这是为了后续操作方便。...如下是一个 DataFrame 组成部分: 红框中DataFrame 部分(values) 上方深蓝色框中是 DataFrame 索引(columns),注意,为什么方框不是一行?...是因为 DataFrame 允许多层次索引。类似于平时复合表头。 左方深蓝色框中是 DataFrame 索引(index)。...我们平时操作 DataFrame 就是通过这两个玩意去定位里面的数据。 如果你熟悉 excel 中透视表,那么完全可以把行列索引当作是透视表中行列区域。

    5K30

    pandas使用与思考读书意义是什么?

    读者是否注意到,前面定义 Series 对象时候,用是列表,即 Series() 方法参数中,第一个列表就是其数据如果需要定义 index,放在后面,依然是一个列表。...Pandas 优势在这里体现出来,如果自定义了索引,自定索引会自动寻找原来索引如果一样,就取原来索引对应,这个可以简称为“自动对齐”。...dtype: float64 在 Pandas 中,如果没有,都对齐赋给 NaN。...字典“键”("name","age","sex")就是 DataFrame columns (名称),字典中每个“键””是一个列表,它们就是那一竖列中具体填充数据。...python 60.0 2 golang NaN 3 NaN NaN DataFrame 对象 columns 属性,能够显示素有的 columns 名称。

    1.4K40

    Pandas数据处理——渐进式学习1、Pandas入门基础

    ,但是她很明显不是一个真正意义存在图片,我们需要很复杂推算以及各种炼丹模型生成AI图片,自己认为难度系数很高,仅仅用了64个文字形容词就生成了她,很有初恋感觉,符合审美观,对于计算机来说她是一组数字...、不同索引数据轻松地转换为 DataFrame 对象; 基于智能标签,对大型数据集进行切片、花式索引、子集分解等操作; 直观地合并(merge)、**连接(join)**数据集; 灵活地重塑(reshape...数据结构 维数 名称 描述 1 Series 带标签一维同构数组 2 DataFrame 带标签,大小可变,二维异构表格 为什么有多个数据结构? Pandas 数据结构就像是低维数据容器。...用这种方式迭代 DataFrame 列,代码更易读易懂: for col in df.columns: series = df[col] 大小可变与数据复制 Pandas 所有数据结构都是可变...这里我们如果遍历的话就看不到对应下标了。

    2.2K50

    《利用Python进行数据分析·第2版》第5章 pandas入门5.1 pandas数据结构介绍5.2 基本功能5.3 汇总和计算描述统计5.4 总结

    如果赋值是一个Series,就会精确匹配DataFrame索引,所有的空位都将被填上缺失: In [58]: val = pd.Series([-1.2, -1.5, -1.7], index=[...用loc和iloc进行选取 对于DataFrame标签索引引入了特殊标签运算符loc和iloc。...表5-4 DataFrame索引选项 整数索引 处理整数索引pandas对象常常难住新手,因为它与Python内置列表和元组索引语法不同。...表5-6 排名时用于破坏平级关系方法 带有重复标签索引 直到目前为止,所介绍所有范例都有着唯一轴标签(索引)。...[226]: obj['c'] Out[226]: 4 这样会使代码复杂,因为索引输出类型会根据标签是否有重复发生变化。

    6.1K70

    Python科学计算之Pandas

    而Scipy(会在接下来帖子中提及)当然是另一个主要也十分出色科学计算库,但是认为前三者才是真正Python科学计算支柱。...好,我们也可以在Pandas中做同样事。 ? 上述代码将范围一个布尔dataframe,其中,如果9、10月降雨量低于1000毫米,则对应布尔为‘True’,反之,则为’False’。...这将会给’water_year’一个新索引。注意到列名虽然只有一个元素,却实际上需要包含于一个列表中。如果你想要多个索引,你可以简单地在列表中增加另一个列名。 ?...正如loc和iloc,上述代码将返回一个series包含你所索引数据。 既然ix可以完成loc和iloc二者工作,为什么还需要它们呢?最主要原因是ix有一些轻微不可预测性。...这个pivot创造了许多空NaN条目。个人觉得dataframe被乱七八糟NaN分散了注意力,所以使用了fillna(‘’)将他们变成了空字符串。

    2.9K00

    Python数据分析实战之技巧总结

    —— PandasDataFrame如何固定字段排序 —— 保证字段唯一性应如何处理 —— 透视表pivot_table函数转化长表注意问题 ——PandasDataFrame数据框存在缺失NaN...运算如何应对 ——如何对数据框进行任意行列增、删、、查操作 —— 如何实现字段自定义打标签 Q1:PandasDataFrame如何固定字段排序 df_1 = pd.DataFrame({"itemtype...#如果这样操作,发现所求列为空,不是想要结果 df["照明用电"]=df["电耗量"]-df["空调用电"]-df["动力用电"]-df["特殊用电"] ? 应该如何处理?...Q5、如何对数据框进行任意行列增、删、、查操作 df1=df.copy() #复制一下 # 增操作 #普通索引,直接传入行或列 # 在第0行添加新行 df1.loc[0] = ["F","1月",...# df4=df1.copy() df4 #切片索引,传入行或列位置区间 df4.iloc[:,5]= np.arange(7) # # 元素赋值修改 df4.loc[0, '电耗量'] = 900

    2.4K10

    ​《爱上潘大师》系列-你还记得那年DataFrame

    写在前面的话 如果你还记得那年大明湖畔xiaoyige,那你就应该来看看这篇文章 我们学是技术,小一可是技术文章,哪来那么多情啊爱啊 今天内容很重要!...DataFrame 初衷就是为了解决这些问题,简洁、易用功能也是作者最初愿景 所以 ,后面的系列文章,如果你对某个概念不是很理解,想一想 Excel 中是怎么表述 创建 DataFrame...DataFrame 每列可以是不同类型(数值、字符串、布尔DataFrame数据是以一个或多个二维块存放DataFrame 都有哪些创建方式?...,有些书上写过于复杂,让人眼花缭乱 万不离其宗,核心就是这三种 至于第四种通过其他DataFrame创建,就不多说了吧?...,如果某个索引不存在,则使用 fille_value 进行填充 还记得前面说DataFrame 中行、列索引分别是什么吗?

    84700

    盘一盘 Python 系列 4 - Pandas (下)

    df1 中有 IR Option 而 df2 中没有,因此 Number_y 栏下NaN df2 中有 IR Swap 而 df1 中没有,因此 Number_x 栏下NaN ----...如果觉得后缀 _x, _y 没有什么具体含义时,可以设定 suffixes 来后缀。...列索引 = [行业, 价格, 交易量],名称是特征 stack: 列索引 → 行索引索引 (特征) 变成了索引,原来 DataFrame df 变成了两层 Series (第一层索引是代号,第二层索引是特征...unstack: 行索引 → 列索引索引 (代号) 变成了索引,原来 DataFrame df 也变成了两层 Series (第一层索引是特征,第二层索引是代号)。...在 Pandas 里透视方法有两种: 用 pivot 函数将「一张长表」「多张宽表」, 用 melt 函数将「多张宽表」「一张长表」, 本节使用数据描述如下: 5 只股票:AAPL, JD,

    4.8K40

    Python 数据分析(PYDA)第三版(二)

    ,但在本书中,使用它来描述对整个数据数组进行操作,而不是逐个使用 Python for循环。...如果分配一个 Series,其标签将被重新对齐到 DataFrame 索引,插入任何不存在索引缺失: In [65]: val = pd.Series([-1.2, -1.5, -1.7],...在这种情况下,列变成了Python 对象数组。 内部字典中键被组合以形成结果中索引。...NumPy 结构化/记录数组 被视为“数组字典”情况 Series 字典 每个都变成了一列;如果没有传递显式索引,则每个 Series 索引被合并在一起以形成结果索引 字典字典 每个内部字典都变成了一列...;键被合并以形成行索引,就像“Series 字典”情况一样 字典或 Series 列表 每个项目都变成了 DataFrame一行;字典键或 Series 索引并集成为 DataFrame 列标签

    25800

    上手Pandas,带你玩转数据(1)-- 实例详解pandas数据结构

    序列可以使用以下构造函数创建: pandas.Series( data, index, dtype, copy) 参数释义: data:数据采取各种形式,如:ndarray,list,constants index:索引必须是唯一和散列...如果 索引 被传递, 索引标签对应数据将被取出。...index:对于行标签,如果没有索引被传递,则要用于结果帧索引是可选缺省np.arrange(n)。 columns:对于列标签,可选默认语法是 - np.arrange(n)。...这只有在没有通过索引情况下才是正确。 dtype:每列数据类型。 copy:如果默认为False,则使用该命令(或其它)复制数据。...empty 如果NDFrame完全为空[没有项目],则为true; 如果任何轴长度为0。 ndim 轴/阵列尺寸数量。 shape 返回表示DataFrame维度元组。

    6.7K30

    Pandas数据处理2、DataFramedrop函数具体参数使用详情

    ,但是她很明显不是一个真正意义存在图片,我们需要很复杂推算以及各种炼丹模型生成AI图片,自己认为难度系数很高,仅仅用了64个文字形容词就生成了她,很有初恋感觉,符合审美观,对于计算机来说她是一组数字...,因为发现没有Pandas处理基本上想好好操作图片数组真的是相当麻烦,可以在很多AI大佬文章中发现都有这个Pandas文章,每个人写法都不同,但是都是适合自己理解方案,是用于教学,故而我相信我文章更适合新晋程序员们学习...---- 环境 系统环境:win11 Python版本:python3.9 编译工具:PyCharm Community Edition 2022.3.1 Numpy版本:1.19.5 Pandas...0,那么则删除行,如果为1,则删除列。...index:index是按照行删除时传入参数,需要传入是一个列表,包含待删除行索引编号。 columns:columns是按照列删除时参数,同样传入是一个列表,包含需要删除列名称。

    1.3K30

    Python fill_python mean

    大家好,又见面了,是你们朋友全栈君。 而df.fillna(0)用0填充所有NA / NaN,是否有一个函数将所有非NA / NaN替换为另一个,例如1?...如果DataFrame是可变长度列表,那么: > df.replace()要求列表长度相同 >布尔索引,如df [len(df)> 0] = 1抛出ValueError:无法插入True,已经存在...> pandas.get_dummies()抛出TypeError:unhashable类型:’list’ 有更简单解决方案吗?...解决方法: 您可以使用df [df.notnull()] = 1进行索引/赋值.例如: >>> df = pd.DataFrame([[np.nan, 2, 5], [2, 5, np.nan], [2...> df 0 1 2 0 NaN 1 1 1 1 1 NaN 2 1 1 NaN 标签:python,dataframe,pandas,nan 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn

    73140
    领券