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.

有时间再详细补充

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Pandas 中,DataFrame 中的每一列都有一个列索引(column index),而每一行都有一个行索引(row index),这些索引用于标识 DataFrame 中的数据。 列索引是一个包含列标签(column label)的 Index 对象,可以使用 `df.columns` 属性来访问它,其中 df 是 DataFrame 对象。行索引是一个包含行标签(row label)的 Index 对象,可以使用 `df.index` 属性来访问它。 行索引和列索引都遵循以下规则: 1. 索引可以是任何 hashable 的对象,通常使用字符串或整数作为索引。如果没有显式指定索引,则使用默认的整数索引,从 0 开始递增。 2. 索引对象是不可变的,不能直接修改索引的值。如果需要修改索引,需要先创建一个新的索引对象。 3. 索引对象可以包含重复的标签,但是在某些操作中可能会出现问题。为了避免这种情况,可以使用 `duplicated()` 和 `drop_duplicates()` 方法来检测和删除重复的标签。 4. 索引对象可以使用切片(slice)来进行筛选或切片操作,也可以使用布尔索引进行过滤。 5. 所有的 Pandas 函数和方法都支持使用行索引和列索引进行数据选择和操作。 6. 索引对象可以使用 `set_index()` 方法来更改 DataFrame 的行索引,也可以使用 `reset_index()` 方法重置索引。列索引只能通过修改 `df.columns` 属性来更改。 总之,索引Pandas 中非常重要的概念,可以帮助我们对数据进行快速的查询、切片和操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值