pandas dataframe reindex 重置行和列索引解决方法

df 数据是 pd.dataframe 类型,原格式是

        >>>df.reindex(['a','b','c','d','e'])
                      C1          C2
        b             200         NaN
        c             200         NaN
        a             404         NaN
        e             404         NaN
        d             301         NaN

希望重置 df 索引为指定顺序:a,b,c,d,e
利用 pandas 内置 reindex 重置函数

df.reindex([‘a’,‘b’,‘c’,‘d’,‘e’])

运行上述代码后索引顺序并没有改变,仍为原来的b,c,a,e,d

在百度上搜索了很久都没有找到解决方法,只有一些区分 reindex 和 reset.index 的函数解释,我查看了 pandas 源代码,发现 reindex 函数还有一个 axis 变量,可以指定对行或列的索引进行重新排序。

df.reindex([‘a’,‘b’,‘c’,‘d’,‘e’], axis = ‘rows’)
运行上述代码后,终于成功重置了索引顺序,新格式为

        >>> df.reindex(['a','b','c','d','e'], axis = 'rows')
                       C1          C2
        a             404         NaN
        b             200         NaN
        c             200         NaN
        d             301         NaN
        e             404         NaN

索引对应的值不会改变,只改变了索引排列的顺序

**
补充说明:因为reindex函数没有(inplace=True)参数,如果没有成功重置索引,建议新增参数,如 df_1 = df.reindex([‘a’,‘b’,‘c’,‘d’,‘e’], axis = ‘rows’)

拓展一下:

**

df.reindex( xxxx, axis = ‘rows’) 重置索引行顺序

df.reindex( xxxx, axis = ‘columns’)
如果新索引名与原来相同,则重置索引列顺序
如果新索引名与原来不同,将替代原索引名称并创建新列,如下:

        >>> df.reindex(['D1','D2','D3'], axis = 'columns')
                       D1          D2        D3
        a             404         NaN        NaN
        b             200         NaN        NaN
        c             200         NaN        NaN
        d             301         NaN        NaN
        e             404         NaN        NaN

df.reindex([‘http_status’, ‘user_agent’], axis=“columns”)
df.reindex(index=index_labels, columns=column_labels, …) 筛选行和列

reindex 还可以用来处理空值 NaN,df.reindex([‘a’,‘b’,‘c’,‘d’,‘e’], fill_value=‘FL’)

        >>> df.reindex(['a','b','c','d','e'], fill_value='FL')
                       D1          D2        D3
        a             404         FL        FL
        b             200         FL        FL
        c             200         FL        FL
        d             301         FL        FL
        e             404         FL        FL

其他相似函数功能
DataFrame.set_index : Set row labels.
DataFrame.reset_index : Remove row labels or move them to new columns.
DataFrame.reindex_like : Change to same indices as other DataFrame.

有时间再详细补充

pandas中,reindex方法用于重新索引一个Series或DataFrame对象。如果在reindex方法中只传入一个序列,那么默认会改变索引。例如,对于一个DataFrame对象df,可以使用df.reindex(\['a', 'b', 'c', 'd'\])来重新索引,结果会根据传入的序列重新组织数据,并填充缺失的位置为NaN。\[1\] 另外,reindex方法还可以用于重置行、列索引标签。例如,可以使用df.reindex(index=\[0,2,5\], columns=\['A', 'C', 'B'\])来重新索引DataFrame对象df的行和列,结果会根据给定的新索引重新组织数据,并填充缺失的位置为NaN。\[2\] 对于一个Series对象,reindex方法会创建一个新对象,并根据给定的新索引重新组织数据。如果新索引中有原来索引不存在的标签,那么这些标签对应位置会被填充为NaN。例如,对于一个Series对象s1,可以使用s2 = s1.reindex(\['a', 'b', 'c', 'd', 'e'\])来重新索引,结果会根据给定的新索引重新组织数据,并填充缺失的位置为NaN。\[3\] #### 引用[.reference_title] - *1* *3* [pandas reindex 方法](https://blog.csdn.net/myDarling_/article/details/128024740)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Pandas reindex重置索引](https://blog.csdn.net/ccc369639963/article/details/124246373)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值