pandas reindex_Pandas 必备操作之 Index

1 index 

pandas 中的 index 是行索引或行标签。行标签可以说是 pandas 的灵魂一签,支撑了 pandas 很多强大的业务功能,比如多个数据框的 join, merge 操作,自动对齐等。

下面总结几个平时常用的关于 index 的操作

2 列转 index 

有时,我们想把现有的数据框的某些列转化为 index,为之后的更多操作做准备。列转 index 实现方法如下:

In [1]: import pandas as pd

In [2]: df1 = pd.DataFrame({'a':[1,3,5],'b':[9,4,12]})

In [3]: df1

Out[3]:

a b

0 1 9

1 3 4

2 5 12

In [4]: df1.set_index('a',drop=False)

Out[4]:

a b

a

1 1 9

3 3 4

5 5 12

In [5]: df1.set_index('a',drop=True)

Out[5]:

b

a

1 9

3 4

5 12

3 index 转列 

操作完成后,想再还原,即 index 转化为列,操作如下:

In [9]: df2.reset_index('a',drop=True)

Out[9]:

b

0 9

1 4

2 12

In [10]: df2.reset_index('a',drop=False)

Out[10]:

a b

0 1 9

1 3 4

2 5 12

4 index, 随心所欲 

如果想按照某种规则,重新排序行数据或列数据,靠一个函数就可以做到,它就是 reindex, 设置一个

In [3]: df1

Out[3]:

a b

0 1 9

1 3 4

2 5 12

In [12]: df1.reindex([0,3,2,1])

Out[12]:

a b

0 1.0 9.0

3 NaN NaN

2 5.0 12.0

1 3.0 4.0

df1 原来有的行索引会重新按照最新的索引[0,3,2,1]重新对齐,原来没有的行索引 3,默认数据都填充为 NaN.

列数据的调整,也一样通过 reindex 实现,如下:

In [13]: df1.reindex(columns=['b','a','c'])

Out[13]:

b a c

0 9 1 NaN

1 4 3 NaN

2 12 5 NaN

以上是关于 index 调整的某些策略。

5 留一个问题

如何判断一个数据框中某行数据等于某个Series,比如:

In [19]: df

Out[19]:

a b

0 1 6

1 2 2

2 5 8

s = pd.Series([5,8],index=['a','b']) # df的 index=2 等于s, 所以为 True

s1 = pd.Series([89,8],index=['a','b']) # False

欢迎留言,期待你的想法。


Python 数据分析必备学习路线:期待你的参与

Python异常:unhashable type 是怎么回事?

46f7ac4cd4b73d02fcfac37868336b88.png

Python与机器学习算法频道

长按订阅,干货满满

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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 ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值