专栏首页算法channelPandas 必备操作之 Index

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]: df1Out[3]:    a   b0  1   91  3   42  5  12
In [4]: df1.set_index('a',drop=False)                                                                                                                                      Out[4]:    a   ba1  1   93  3   45  5  12
In [5]: df1.set_index('a',drop=True)                                                                                                                                       Out[5]:     ba1   93   45  12

3 index 转列

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

In [9]: df2.reset_index('a',drop=True)                                                                                                                                     Out[9]:     b0   91   42  12
In [10]: df2.reset_index('a',drop=False)                                                                                                                                   Out[10]:    a   b0  1   91  3   42  5  12

4 index, 随心所欲

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

In [3]: df1Out[3]:    a   b0  1   91  3   42  5  12
In [12]: df1.reindex([0,3,2,1])                                                                                                                                            Out[12]:      a     b0  1.0   9.03  NaN   NaN2  5.0  12.01  3.0   4.0

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

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

In [13]: df1.reindex(columns=['b','a','c'])                                                                                                                                Out[13]:     b  a   c0   9  1 NaN1   4  3 NaN2  12  5 NaN

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

5 留一个问题

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

In [19]: dfOut[19]:    a  b0  1  61  2  22  5  8s = pd.Series([5,8],index=['a','b'])  # df的 index=2 等于s, 所以为 Trues1 = pd.Series([89,8],index=['a','b'])  # False

本文分享自微信公众号 - Python与机器学习算法频道(alg-channel),作者:榛果

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 机器学习|快速排序思想求topk

    01 — Topk by quicksort 问题是求出数据集中,按照某个规则定义的元素大小,取前k个元素。 为了简化起见,直接求数值型数组的前k个最大元素。...

    double
  • json读入小结

    回家已经11点后,写一点今天工作中用到的知识,不太熟练,耽误了些时间。因为任务紧急,类似这种对某个知识点不熟练,累计叠加起来,就会导致做事变慢,最终只能靠加班。

    double
  • Python 10 个极简用法,第五期

    Python 无栈(stack)这一数据结构,但 Python列表实当栈用极为方便。

    double
  • Neo4j 两种索引Legacy Index与Schema Index区别

    在Neo4j 2.0版本之前,Legacy index被称作indexes。这个索引是通过外部图存储在外的Lucene实现,允许“节点”和“联系”以key:va...

    用户3148308
  • 简谈选择排序

    Jacklin
  • 一道面试题引发的思考

    为什么呢?那么我们怎么来发现它背后的秘密呢?答案只有一个:那就是通过源码来解惑(ArrayList部分源码)。

    阿豪聊干货
  • Java容器 ArrayList

    ArrayList 数组容器类,实现了List,RandomAccess,Cloneable,Serializable四个接口,继承自AbstractList,...

    zeody
  • Java数据结构-------List

        ArrayList和Vector通过数组实现,几乎使用了相同的算法;区别是ArrayList不是线程安全的,Vector绝大多数方法做了线程同步。

    在周末
  • jdk源码追踪-ArrayList

    AbstractList是List抽象基类,ArrayList,LinkedList都是它的子类或孙子类。它采用模版方法模式通过调用抽象方法get(int in...

    逝兮诚
  • Kali Linux Web渗透测试手册(第二版) - 6.1 - 寻找文件包含漏洞

    thr0cyte,Gr33k,花花,MrTools,R1ght0us,7089bAt,

    7089bAt@PowerLi

扫码关注云+社区

领取腾讯云代金券