pandas的iloc、loc、ix的使用(列切片及行切片)

loc:通过选取行(列)标签索引数据 
iloc:通过选取行(列)位置编号索引数据 
ix:既可以通过行(列)标签索引数据,也可以通过行(列)位置编号索引数据


df是一个dataframe,列名为A B C D
具体值如下:
A    B     C    D
0    ss   小红   8
1    aa   小明   d
4    f          f
6    ak   小紫   7 
dataframe里的属性是不定的,空值默认为NA。
一、选取标签为A和C的列,并且选完类型还是dataframe
df = df.loc[:, ['A', 'C']]
df = df.iloc[:, [0, 2]]
二、选取标签为A和C的列并且只取前两行,选完类型还是dataframe
df = df.loc[0:2, ['A', 'C']] 
df = df.iloc[0:2, [0, 2]] 
三、选取行,选完类型还是dataframe
df = df.loc[0:2,:]  选取0-2行,[0,2]闭区间
df = df.iloc[0:2,:] 选取0-2行,[0,2]闭区间

聪明的朋友已经看出iloc和loc的不同了:loc是根据dataframe的具体标签选取列,而iloc是根据标签所在的位置,从0开始计数。
","前面的":"表示选取整行,第二个示例中的的0:2表示选取第0行到第二行,这里的0:2相当于[0,2)前闭后开,2是不在范围之内的。
需要注意的是,如果是df = df.loc[0:2, ['A', 'C']]或者df = df.loc[0:2, ['A', 'C']],切片之后类型依旧是dataframe,不能直接进行。
加减乘除等操作的,比如dataframe的一列是数学成绩(shuxue),另一列为语文成绩(yuwen),现在需要求两门课程的总和。可以使用df['shuxue'] + df['yuwen'](选取完之后类型为series)来获得总分,而不能使用df.iloc[:,[2]]+df.iloc[:,[1]]或df.iloc[:,['shuxue']]+df.iloc[:,['yuwen']],这会产生错误结果
  • 8
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在使用pandas对指定行进行切片时,可以使用以下方法。首先,可以使用读取整个文件后进行切片处理的方法。通过使用`df.iloc`来取出特定行或。例如,使用`df.iloc\[0\]`可以获取第一行的数据,使用`df.iloc\[:3\]`可以获取前三行的数据,使用`df.iloc\[:, 0\]`可以获取第一的数据,使用`df.iloc\[:, :2\]`可以获取前两的数据。此外,还可以使用`df\[3:10\]`来获取第四行到第十行的数据,使用`df\["的名字"\]`来直接查看某一的值。这些操作类似于对表进行切片操作。\[1\] 另外,还可以使用不读取整个文件,而是读取特定行和方法。当遇到文件太大时,可以直接读取所需的指定行和使用`pd.read_csv`函数的`nrows`参数可以指定读取的行数,例如`pd.read_csv("路径\文件名称", nrows=15)`可以只读取前十五行。使用`pd.read_csv`函数的`skiprows`参数可以指定需要忽略的行数,例如`pd.read_csv("路径\文件名称", skiprows=9, nrows=5)`可以忽略前九行,然后读取接下来的五行。对于的选择,可以使用`usecols`参数来指定要读取的,例如`pd.read_csv("1217_1out.csv", usecols=\[0\])`可以只读取第一的数据。\[1\] 需要注意的是,使用`.loc`、`.iloc`、`.ix`等方法时,只提供一个参数时,进行的是行选择。而使用`.loc`、`.at`方法选择时,只能使用名,不能使用位置。而使用`.iloc`、`.iat`方法选择时,只能使用位置,不能使用名。另外,使用`df\[\]`只能进行行选择或选择,不能同时进行选择,选择只能使用名。\[2\] 最后,需要注意行索引以及默认的索引值。在pandas中,数据存储本身可能有起始,但是pandas读取后会默认给一个递增的索引值。通过使用`.loc`方法可以通过值来进行切片操作。\[3\] #### 引用[.reference_title] - *1* [pandas读取指定行/的几种操作](https://blog.csdn.net/bianxia123456/article/details/111396760)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [python pandas dataframe 行选择,切片操作](https://blog.csdn.net/LY_ysys629/article/details/55224284)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Pandas提取指定行](https://blog.csdn.net/weixin_42670810/article/details/109685030)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值