博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix
阅读量:7009 次
发布时间:2019-06-28

本文共 929 字,大约阅读时间需要 3 分钟。

相信很多人像我一样在学习python,pandas过程中对数据的选取和修改有很大的困惑(也许是深受Matlab)的影响。。。

到今天终于完全搞清楚了!!!

先手工生出一个数据框吧

[python] view plain copy

import numpy as np  import pandas as pd  df = pd.DataFrame(np.arange(0,60,2).reshape(10,3),columns=list('abc'))

df 是这样子滴

那么这三种选取数据的方式该怎么选择呢?

一、当每列已有column name时,用 df [ 'a' ] 就能选取出一整列数据。如果你知道column names 和index,且两者都很好输入,可以选择 .loc

[python] view plain copy

df.loc[0, 'a']  df.loc[0:3, ['a', 'b']]  df.loc[[1, 5], ['b', 'c']]

由于这边我们没有命名index,所以是DataFrame自动赋予的,为数字0-9

二、如果我们嫌column name太长了,输入不方便,有或者index是一列时间序列,更不好输入,那就可以选择 .iloc了。这边的 i 我觉得代表index,比较好记点。

[python] view plain copy

df.iloc[1,1]  df.iloc[0:3, [0,1]]  df.iloc[[0, 3, 5], 0:2]

iloc 使得我们可以对column使用slice(切片)的方法对数据进行选取。

三、.ix 的功能就更强大了,它允许我们混合使用下标和名称进行选取。 可以说它涵盖了前面所有的用法。基本上把前面的都换成df.ix 都能成功,但是有一点,就是

df.ix [ [ ..1.. ], [..2..] ], 1框内必须统一,必须同时是下标或者名称,2框也一样。 BTW, 1框是用来指定row,2框是指定column, 当然上面所有的取数方法都是这个规则。

这就是我目前的领悟吧。

转载于:https://blog.51cto.com/eynjay/2046739

你可能感兴趣的文章
BGP 管理距离修改及分析
查看>>
我的友情链接
查看>>
uptime详解,最通俗的说明了cpu平均负载
查看>>
docker-compose 学习:通过 Dockerfile 和 build 指令搭建 LNMP
查看>>
关于android服务器推送解决方案的学习
查看>>
我的友情链接
查看>>
归档模式和非归档模式 Oracle 10g学习系列(4)
查看>>
多线程程序,只有黑盒测试是不够的!
查看>>
服务器上安装nodejs
查看>>
Python 自动化运维1-拷贝
查看>>
单独编译apache的rewrite模块--收藏
查看>>
一次利用nginx漏洞的***事件
查看>>
我的友情链接
查看>>
split()方法的用法!
查看>>
配置applicationContext.xml出现的问题
查看>>
无线网络IP地址冲突问题不再棘手
查看>>
我的友情链接
查看>>
域名扫描工具Fierce
查看>>
Zabbix WMI 监控
查看>>
关于for in和for循环的遍历
查看>>