pandas索引操作

Posted qi-yuan-008

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas索引操作相关的知识,希望对你有一定的参考价值。

pandas的索引操作可以快速的完成多种功能。

import pandas as pd
import numpy as np

1. 首先pandas创建DataFrame

df_1 = pd.DataFrame([[Jack,M,40],[Tony,M,20],[Mary,F,30],[Bob,M,25]], columns=[name,gender,age])  #列表创建DataFrame
print(------ df_1是: ------)
print(df_1)

技术图片

2. 直接列名检索

# 列名索引
a = df_1[name]
print(a)

技术图片

3. 同时取多列数据

# 同时取多列
b = df_1[[name,age]]
print(b)

技术图片

4. 切片索引

# 切片索引,按行索引
bb = df_1[1:3]
print(bb)

技术图片

5. 条件索引

aa = df_1[df_1.age>25]
print(aa)

技术图片

6. isin判断

# isin 索引
cc = df_1[df_1.name.isin([Jack,Bob])]
print(cc)

技术图片

7. loc取行数据

# loc取行
dd = df_1.loc[df_1.name.isin([Jack,Bob])] #去满足条件的所有行
print(dd)

技术图片

8. loc标签

# loc取行
ee = df_1.loc[1:3]  #直接按照标签取,不是属于切片,所以会1-3行全部取出来
print(ee)

技术图片

 9. 多个条件,‘|‘ 条件取行(‘或‘条件),逻辑条件

ff = df_1.loc[df_1.name.isin([Jack,Bob]) | (df_1.age>25)]  #多个条件,‘|‘条件取行
print(the value of ff is: )
print(ff)
print(df_1.name.isin([Jack,Bob]) | (df_1.age>25))

技术图片

10. 多个条件取行,‘&‘ 条件取行,(‘与‘ 条件),逻辑条件

gg = df_1.loc[df_1.name.isin([Jack,Bob]) & (df_1.age>25)]  #多个条件取行,‘&‘条件取行
print(the value of gg is: )
print(gg)
print(df_1.name.isin([Jack,Bob]) & (df_1.age>25))

技术图片

11. loc 按行、列条件取值,取其中某列,可用来取某一行某一列的值(也就是某个位置的值)

hh = df_1.loc[df_1.name.isin([Jack,Bob]) | (df_1.age>25), age]
print(hh)

技术图片

12. loc多行、列取值,取多行多列

ii = df_1.loc[1:3, name:gender]  # ‘name‘:‘gender‘顺序有前后
print(the value of ii is: )
print(ii)

技术图片

13. iloc:切片

jj = df_1.iloc[1:3]  #此时按照切片规则取行
print(the value of jj is: )
print(jj)

技术图片

14. ix:之前的方法,现在可以用loc和iloc来实现,执行的时候会出现:DeprecationWarning: .ix is deprecated. Please use  .loc for label based indexing or  .iloc for positional indexing。

mm = df_1.ix[1:3]  #此时按照标签规则取行,而不是切片规则
print(the value of mm is: )
print(mm)

技术图片

nn = df_1.ix[1:3, name:gender]  #此时按照标签规则取行,而不是切片规则
print(the value of nn is: )
print(nn)

技术图片

15. 如果其中的值都是数字,可以对整体进行限定,例如:

array_test = np.array([[1,2,3,4],[2,3,4,5],[3,4,5,6]])
df_3 = pd.DataFrame(array_test, index = [aa, bb, ff], columns = [c1, c2, c3, c4])  #数组创建DataFrame
print(------ df_3是: ------)
print(df_3)

技术图片

# 取满足条件的值:

df_4 = df_3[df_3>3]  #取满足条件的值
print(the value of df_4 is :)
print(df_4)

技术图片

# 将满足条件的值重新赋值:

df_3[df_3>3]=0  #将满足条件的值重新赋值
print(the value of df_3 is :)
print(df_3)

技术图片

 

##

以上是关于pandas索引操作的主要内容,如果未能解决你的问题,请参考以下文章

Pandas索引基本操作

Pandas - 索引操作

在 pandas 中加入数据帧时的内存问题(时间索引)

Pandas - 查找和索引与行序列模式匹配的行

pandas:在 MultiIndex DataFrame 上复制/广播单索引 DataFrame:操作方法和内存效率

pandas重置dataframe的索引(reset_index)如果索引不匹配dataframe操作时候的问题重置索引(不设置drop=true)远索引生成新的数据列