巧用Pandas筛选数据

本文介绍了如何使用Pandas库在Python中进行数据筛选。从单个条件筛选到多个条件的组合筛选,再到利用isin()方法与列表进行比较筛选,详细阐述了数据处理的关键步骤。

初始化数据如下

In [6]: name = ['alex', 'sam', 'tom', 'nick', 'jack']

In [76]: data
Out[76]:
          0         1         2         3  name
0  0.463155  0.539862  0.519511  0.327331  alex
1  1.000000  0.949935  0.743394  0.981017   sam
2  1.000000  0.142879  0.697693  0.510754   tom
3  0.610432  0.443025  0.492208  0.720402  nick
4  0.593707  0.151083  0.019072  0.261002  jack

使用单个条件的筛选:

In [92]: data.loc[:,'name']=='sam'
Out[92]:
0    False
1     True
2    False
3    False
4    False
Name: name, dtype: bool

In [93]: data.loc[data.loc[:,'name']=='sam',:]
Out[93]:
     0         1         2         3 name
1  1.0  0.949935  0.743394  0.981017  sam

In [94]: data.loc[data.loc[:,'name']=='alex',:]
Out[94]:
          0         1         2         3  name
0  0.463155  0.539862  0.519511  0.327331  alex

In [95]: data.loc[data.loc[:,'name']=='tom',:]
Out[95]:
     0         1         2         3 name
2  1.0  0.142879  0.697693  0.510754  tom

使用多个条件的组合筛选

注意组合筛选中需要加括号:

In [102]: s = data.loc[:,'name']=='sam'

In [103]: s
Out[103]:
0    False
1     True
2    False
3    False
4    False
Name: name, dtype: bool

In [104]: t = data.loc[:,'name']=='tom'

In [105]: t
Out[105]:
0    False
1    False
2     True
3    False
4    False
Name: name, dtype: bool

In [107]: s | t
Out[107]:
0    False
1     True
2     True
3    False
4    False
Name: name, dtype: bool

In [108]: (data.loc[:,'name']=='sam') | (data.loc[:,'name']=='alex')
Out[108]:
0     True
1     True
2    False
3    False
4    False
Name: name, dtype: bool

In [109]: (data.loc[:,'name']=='sam') & (data.loc[:,'name']=='alex')
Out[109]:
0    False
1    False
2    False
3    False
4    False
Name: name, dtype: bool

In [128]: data.loc[(data.loc[:,'name']=='sam') & (data.loc[:,'name']=='alex'),:]
Out[128]:
Empty DataFrame
Columns: [0, 1, 2, 3, name]
Index: []

In [129]: data.loc[(data.loc[:,'name']=='sam') | (data.loc[:,'name']=='alex'),:]
Out[129]:
          0         1         2         3  name
0  0.463155  0.539862  0.519511  0.327331  alex
1  1.000000  0.949935  0.743394  0.981017   sam

当需要跟一个列表进行比较筛选时,可以用isin()方法:

In [96]: select_name = ['alex', 'jack', 'nick']

In [127]: data.loc[data.loc[:,'name'].isin(select_name),:]
Out[127]:
          0         1         2         3  name
0  0.463155  0.539862  0.519511  0.327331  alex
3  0.610432  0.443025  0.492208  0.720402  nick
4  0.593707  0.151083  0.019072  0.261002  jack
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值