基于pandas的数据索引,采用iloc、loc方法等进行数据的普通索引、布尔索引、切片索引的联用,进而得到对不同列、行、多列、多行、指定列与行数据的选取...
数据选择
1 列选择
1.1 选择某一列/某几列
在Python中我们要想获取某列只需要在表df后面的方括号中指明要选择的列名即可。如果是一列,则只需要传入一个列名;
如果是同时选择多列,则传入多个列名即可,多个列名用一个list存起来
import pandas as pd
df = pd.read_excel(r"D:\testdata\data.xlsx")
print(df.head())
实际价格(元) 运费(元) 数量 实际支付(元) 状态 商品SKU信息 省 市 \
0 218.9 0.0 1 218.9 已付款未发货 金色110cm 1个 内蒙古自治区 呼伦贝尔市
1 218.9 0.0 1 218.9 交易关闭 金色120cm 1个 内蒙古自治区 呼伦贝尔市
2 328.9 0.0 1 328.9 交易取消 米白S 1个 山东省 枣庄市
3 218.9 0.0 1 218.9 交易关闭 黑色M 105-120斤 1个 浙江省 嘉兴市
4 185.9 0.0 1 185.9 已付款未发货 黑色L 1个 陕西省 咸阳市
区 会员等级 优惠信息 是否白付美支付 货款退款金额 运费退款金额 退款完成时间
0 新巴尔虎右旗 获取会员信息失败! 无优惠信息 否 0.0 0.0 NaN
1 新巴尔虎右旗 获取会员信息失败! 无优惠信息 否 218.9 0.0 2020-11-12 09:35:43
2 薛城区 获取会员信息失败! 无优惠信息 否 0.0 0.0 NaN
3 桐乡市 获取会员信息失败! 无优惠信息 否 218.9 0.0 2020-11-12 06:37:25
4 杨陵区 获取会员信息失败! 无优惠信息 是 0.0 0.0 NaN
print(df["省"].head())
0 内蒙古自治区
1 内蒙古自治区
2 山东省
3 浙江省
4 陕西省
Name: 省, dtype: object
print(df[["省","市"]].head())
省 市
0 内蒙古自治区 呼伦贝尔市
1 内蒙古自治区 呼伦贝尔市
2 山东省 枣庄市
3 浙江省 嘉兴市
4 陕西省 咸阳市
除了传入具体的列名,我们还可以传入具体列的位置,即第几列,对数据进行选取,通过传入位置来获取数据时需要用到iloc方法
df.iloc[:,1:6].head()
|
运费(元) |
数量 |
实际支付(元) |
状态 |
商品SKU信息 |
0 |
0.0 |
1 |
218.9 |
已付款未发货 |
金色110cm 1个 |
1 |
0.0 |
1 |
218.9 |
交易关闭 |
金色120cm 1个 |
2 |
0.0 |
1 |
328.9 |
交易取消 |
米白S 1个 |
3 |
0.0 |
1 |
218.9 |
交易关闭 |
黑色M 105-120斤 1个 |
4 |
0.0 |
1 |
185.9 |
已付款未发货 |
黑色L 1个 |
df.iloc[:,[1,5]].head()
|
运费(元) |
商品SKU信息 |
0 |
0.0 |
金色110cm 1个 |
1 |
0.0 |
金色120cm 1个 |
2 |
0.0 |
米白S 1个 |
3 |
0.0 |
黑色M 105-120斤 1个 |
4 |
0.0 |
黑色L 1个 |
iloc 后的方括号中逗号之前的部分表示要获取的行的位置,只输入一个冒号,不输入任何数值表示获取所有的行;逗号之后的方括号表示要获取的列的位置,列的位置同样是也是从0开始计数。
loc、iloc、ix方法的使用:
loc:值索引通过选取行(列)标签索引数据,通过行索引 “Index” 中的具体值来取行数据
iloc:位置索引,通过选取行(列)位置编号索引数据,列表形式
ix:既可以通过行(列)标签索引数据,也可以通过行(列)位置编号索引数据
df.loc[:,"省":"区"].head()
|
省 |
市 |
区 |
0 |
内蒙古自治区 |
呼伦贝尔市 |
新巴尔虎右旗 |
1 |
内蒙古自治区 |
呼伦贝尔市 |
新巴尔虎右旗 |
2 |
山东省 |
枣庄市 |
薛城区 |
3 |
浙江省 |
嘉兴市 |
桐乡市 |
4 |
陕西省 |
咸阳市 |
杨陵区 |
df.loc[:,["省","市","区"]].head()
|
省 |
市 |
区 |
0 |
内蒙古自治区 |
呼伦贝尔市 |
新巴尔虎右旗 |
1 |
内蒙古自治区 |
呼伦贝尔市 |
新巴尔虎右旗 |
2 |
山东省 |
枣庄市 |
薛城区 |
3 |
浙江省 |
嘉兴市 |
桐乡市 |
4 |
陕西省 |
咸阳市 |
杨陵区 |
1.2 选择连续的某几列
df.iloc[:,1:5].head()
|
运费(元) |
数量 |
实际支付(元) |
状态 |
0 |
0.0 |
1 |
218.9 |
已付款未发货 |
1 |
0.0 |
1 |
218.9 |
交易关闭 |
2 |
0.0 |
1 |
328.9 |
交易取消 |
3 |
0.0 |
1 |
218.9 |
交易关闭 |
4 |
0.0 |
1 |
185.9 |
已付款未发货 |
iloc后的方括号中逗号之前的表示选择的行,当只传入一个冒号时,表示选择所有行;
逗号后面表示要选择列的位置区间,1:5表示选择第2列到第5列之间的值(包含第2列但不包含第5列),我们把这种通过传入一个位置区间来获取数据的方式称为切片索引。
1.3 利用loc、iloc提取指定行、列数据
df.loc[[0,3],["省","市"]]
|
省 |
市 |
0 |
内蒙古自治区 |
呼伦贝尔市 |
3 |
浙江省 |
嘉兴市 |
df.iloc[[0,3],[6,7]]
|
省 |
市 |
0 |
内蒙古自治区 |
呼伦贝尔市 |
3 |
浙江省 |
嘉兴市 |
1.4 利用loc函数,根据某个数据来提取数据所在的行
df.loc[df["省"]=="内蒙古自治区"]
|
实际价格(元) |
运费(元) |
数量 |
实际支付(元) |
状态 |
商品SKU信息 |
省 |
市 |
区 |
会员等级 |
优惠信息 |
是否白付美支付 |
货款退款金额 |
运费退款金额 |
退款完成时间 |
0 |
218.9 |
0.0 |
1 |
218.9 |
已付款未发货 |
金色110cm 1个 |
内蒙古自治区 |
呼伦贝尔市 |
新巴尔虎右旗 |
获取会员信息失败! |
无优惠信息 |
否 |
0.0 |
0.0 |
NaN |
1 |
218.9 |
0.0 |
1 |
218.9 |
交易关闭 |
金色120cm 1个 |
内蒙古自治区 |
呼伦贝尔市 |
新巴尔虎右旗 |
获取会员信息失败! |
无优惠信息 |
否 |
218.9 |
0.0 |
2020-11-12 09:35:43 |
52 |
199.0 |
0.0 |
1 |
199.0 |
交易取消 |
黑色M 105-120斤 1个 |
内蒙古自治区 |
呼和浩特市 |
清水河县 |
获取会员信息失败! |
无优惠信息 |
否 |
0.0 |
0.0 |
NaN |
传入多个条件, 连接符号 &
df.loc[(df["省"]=="内蒙古自治区")&(df["商品SKU信息"]=="黑色M 105-120斤 1个")]
|
实际价格(元) |
运费(元) |
数量 |
实际支付(元) |
状态 |
商品SKU信息 |
省 |
市 |
区 |
会员等级 |
优惠信息 |
是否白付美支付 |
货款退款金额 |
运费退款金额 |
退款完成时间 |
52 |
199.0 |
0.0 |
1 |
199.0 |
交易取消 |
黑色M 105-120斤 1个 |
内蒙古自治区 |
呼和浩特市 |
清水河县 |
获取会员信息失败! |
无优惠信息 |
否 |
0.0 |
0.0 |
NaN |
1.5 选择单列多行、多列多行
df["状态"][0:3]
0 已付款未发货
1 交易关闭
2 交易取消
Name: 状态, dtype: object
df[["状态","商品SKU信息"]][0:3]
|
状态 |
商品SKU信息 |
0 |
已付款未发货 |
金色110cm 1个 |
1 |
交易关闭 |
金色120cm 1个 |
2 |
交易取消 |
米白S 1个 |
2 行选择
2.1 选择某一行/某几行
在Python中,获取行的方式主要有两种,一种是普通索引,即传入具体行索引的名称,需要用到loc方法;另一种是位置索引,即传入具体的行数,需要用到iloc方法。
df.loc[1]
实际价格(元) 218.9
运费(元) 0
数量 1
实际支付(元) 218.9
状态 交易关闭
商品SKU信息 金色120cm 1个
省 内蒙古自治区
市 呼伦贝尔市
区 新巴尔虎右旗
会员等级 获取会员信息失败!
优惠信息 无优惠信息
是否白付美支付 否
货款退款金额 218.9
运费退款金额 0
退款完成时间 2020-11-12 09:35:43
Name: 1, dtype: object
df.loc[[1,3],["订单编号","物品名称"]]
|
订单编号 |
物品名称 |
1 |
96941475341528 |
【叶子yzzz】叶子专享】DSR08B0660鸭鸭男童羽绒服 |
3 |
96940910667716 |
【叶子yzzz】鸭鸭新款女装羽绒服DRH06B0050 |
df.iloc[[1,3]]
|
实际价格(元) |
运费(元) |
数量 |
实际支付(元) |
状态 |
商品SKU信息 |
省 |
市 |
区 |
会员等级 |
优惠信息 |
是否白付美支付 |
货款退款金额 |
运费退款金额 |
退款完成时间 |
1 |
218.9 |
0.0 |
1 |
218.9 |
交易关闭 |
金色120cm 1个 |
内蒙古自治区 |
呼伦贝尔市 |
新巴尔虎右旗 |
获取会员信息失败! |
无优惠信息 |
否 |
218.9 |
0.0 |
2020-11-12 09:35:43 |
3 |
218.9 |
0.0 |
1 |
218.9 |
交易关闭 |
黑色M 105-120斤 1个 |
浙江省 |
嘉兴市 |
桐乡市 |
获取会员信息失败! |
无优惠信息 |
否 |
218.9 |
0.0 |
2020-11-12 06:37:25 |
2.2 选择满足条件的行
在Python中,我们直接在表名后面指明哪列要满足什么条件,就可以把满足条件的数据筛选出来。
df["实际价格(元)"]>200
0 True
1 True
2 True
3 True
4 False
...
83 True
84 True
85 True
86 True
87 True
Name: 实际价格(元), Length: 88, dtype: bool
df[df["实际价格(元)"]>200].head()
|
实际价格(元) |
运费(元) |
数量 |
实际支付(元) |
状态 |
商品SKU信息 |
省 |
市 |
区 |
会员等级 |
优惠信息 |
是否白付美支付 |
货款退款金额 |
运费退款金额 |
退款完成时间 |
0 |
218.9 |
0.0 |
1 |
218.9 |
已付款未发货 |
金色110cm 1个 |
内蒙古自治区 |
呼伦贝尔市 |
新巴尔虎右旗 |
获取会员信息失败! |
无优惠信息 |
否 |
0.0 |
0.0 |
NaN |
1 |
218.9 |
0.0 |
1 |
218.9 |
交易关闭 |
金色120cm 1个 |
内蒙古自治区 |
呼伦贝尔市 |
新巴尔虎右旗 |
获取会员信息失败! |
无优惠信息 |
否 |
218.9 |
0.0 |
2020-11-12 09:35:43 |
2 |
328.9 |
0.0 |
1 |
328.9 |
交易取消 |
米白S 1个 |
山东省 |
枣庄市 |
薛城区 |
获取会员信息失败! |
无优惠信息 |
否 |
0.0 |
0.0 |
NaN |
3 |
218.9 |
0.0 |
1 |
218.9 |
交易关闭 |
黑色M 105-120斤 1个 |
浙江省 |
嘉兴市 |
桐乡市 |
获取会员信息失败! |
无优惠信息 |
否 |
218.9 |
0.0 |
2020-11-12 06:37:25 |
7 |
416.9 |
0.0 |
1 |
416.9 |
交易关闭 |
豆绿色S(90-105斤) 1个 |
湖南省 |
衡阳市 |
耒阳市 |
获取会员信息失败! |
无优惠信息 |
是 |
416.9 |
0.0 |
2020-11-12 08:47:19 |
传入多个条件, 连接符号 &
df[(df["实际价格(元)"]>200) & (df["实际支付(元)"]<300)]
|
实际价格(元) |
运费(元) |
数量 |
实际支付(元) |
状态 |
商品SKU信息 |
省 |
市 |
区 |
会员等级 |
优惠信息 |
是否白付美支付 |
货款退款金额 |
运费退款金额 |
退款完成时间 |
0 |
218.9 |
0.0 |
1 |
218.9 |
已付款未发货 |
金色110cm 1个 |
内蒙古自治区 |
呼伦贝尔市 |
新巴尔虎右旗 |
获取会员信息失败! |
无优惠信息 |
否 |
0.0 |
0.0 |
NaN |
1 |
218.9 |
0.0 |
1 |
218.9 |
交易关闭 |
金色120cm 1个 |
内蒙古自治区 |
呼伦贝尔市 |
新巴尔虎右旗 |
获取会员信息失败! |
无优惠信息 |
否 |
218.9 |
0.0 |
2020-11-12 09:35:43 |
3 |
218.9 |
0.0 |
1 |
218.9 |
交易关闭 |
黑色M 105-120斤 1个 |
浙江省 |
嘉兴市 |
桐乡市 |
获取会员信息失败! |
无优惠信息 |
否 |
218.9 |
0.0 |
2020-11-12 06:37:25 |
2.2 普通索引+普通索引选择指定的行和列
普通索引+普通索引就是通过同时传入行和列的索引名称进行数据选择,需要用到loc方法
loc方法中的第一对方括号表示行索引的选择,传入行索引名称;loc方法中的第二对方括号表示列索引的选择,传入列索引名称
df.loc[[1,3,5],["实际价格(元)","实际支付(元)"]]
|
实际价格(元) |
实际支付(元) |
1 |
218.9 |
218.9 |
3 |
218.9 |
218.9 |
5 |
196.9 |
196.9 |
2.3 位置索引+位置索引选择指定的行和列
位置索引+位置索引是通过同时传入行、列索引的位置来获取数据,需要用到iloc方法
在iloc方法中的第一对方括号表示行索引的选择,传入要选择行索引的位置;第二对方括号表示列索引的选择,传入要选择列索引的位置。行和列索引的位置都是从0开始计数
df.iloc[[1,3,5],[3,4,5]]
|
实际支付(元) |
状态 |
商品SKU信息 |
1 |
218.9 |
交易关闭 |
金色120cm 1个 |
3 |
218.9 |
交易关闭 |
黑色M 105-120斤 1个 |
5 |
196.9 |
交易关闭 |
黑色M 1个 |
2.4 布尔索引+普通索引选择指定的行和列
布尔索引+普通索引是先对表进行布尔索引选择行,然后通过普通索引选择列
df[df["实际价格(元)"]>200][["运费(元)","数量","实际价格(元)"]]
|
运费(元) |
数量 |
实际价格(元) |
0 |
0.0 |
1 |
218.9 |
1 |
0.0 |
1 |
218.9 |
2 |
0.0 |
1 |
328.9 |
3 |
0.0 |
1 |
218.9 |
7 |
0.0 |
1 |
416.9 |
9 |
0.0 |
1 |
328.9 |
11 |
0.0 |
1 |
2199.0 |
41 |
0.0 |
1 |
2199.0 |
44 |
0.0 |
1 |
2199.0 |
69 |
0.0 |
1 |
2199.0 |
83 |
0.0 |
1 |
2199.0 |
84 |
0.0 |
1 |
658.9 |
85 |
0.0 |
1 |
328.9 |
86 |
0.0 |
1 |
328.9 |
87 |
0.0 |
1 |
328.9 |
2.5 切片索引+切片索引选择指定的行和列
切片索引+切片索引是通过同时传入行、列索引的位置区间进行数据选择
df.iloc[0:3,1:3]
|
运费(元) |
数量 |
0 |
0.0 |
1 |
1 |
0.0 |
1 |
2 |
0.0 |
1 |
2.6 切片索引+普通索引选择指定的行和列
df[["实际价格(元)","实际支付(元)"]].iloc[0:2]
|
实际价格(元) |
实际支付(元) |
0 |
218.9 |
218.9 |
1 |
218.9 |
218.9 |
本文地址:https://blog.csdn.net/FGH333xwy/article/details/110431919