Python3 df.loc和df.iloc函数用法及提取指定行列位置处数值

关于pandas.dataframe.loc与pandas.dataframe.iloc用法官方说明,见官网
df.loc和df.iloc函数用法的df,由pandas.read_csv()函数读取文件而来。

1. DataFrame.loc

Access a group of rows and columns by label(s) or a boolean array.
.loc[] is primarily label based, but may also be used with a boolean array.
主要是由字符串作为标签获取,有时也可用布尔型去获取。
df.loc主要是依赖于行列的index字符串名,去索取指定行列位置处的值。loc[]括号内还可以加条件,如df.loc[df[‘shield’] > 6].
在这里插入图片描述

如该表:

在这里插入图片描述
该表首行为列名,没有行名。
如要输出数值第1行(从第0行开始),第"409"列的数值0.000842

根据行列名去提取数值
import pandas as pd
fn = 'F:\\leaf data\\WT梧桐\\叶片随角度变化\\WT1_merged.csv'
df = pd.read_csv(fn)
print(df.loc[1,'409'])
0.0008421012126865671

此方法不一定每次都行,在代码中经常遇到bug,如此刻的一个大段代码中就出现了问题。

在这里插入图片描述
用iloc[]无此问题,见最后一图。

提取某些行
import pandas as pd
fn = 'F:\\leaf data\\WT梧桐\\叶片随角度变化\\WT1_merged.csv'
df = pd.read_csv(fn)
print(df.loc[[1,2]])
#[[1,2]]指同时提取1,2行
   incidence angle    distance       409  ...  882       898       914
1               10  546.478454  0.000842  ...  0.0  0.000611  0.000565
2               20  547.647645  0.000803  ...  0.0  0.000462  0.000389

[2 rows x 34 columns]
print(df.loc[[1,3]])

   incidence angle    distance       409  ...  882       898       914
1               10  546.478454  0.000842  ...  0.0  0.000611  0.000565
3               30  545.938828  0.000799  ...  0.0  0.000705  0.000537

[2 rows x 34 columns]
提取某些列

2. DataFrame.iloc

Access group of rows and columns by integer position(s).
Purely integer-location based indexing for selection by position.
.iloc[] is primarily integer position based (from 0 to length-1 of the axis), but may also be used with a boolean array.
由行列号去获取,如果获取指定行列号处的值,而表中又没有行列名使用,或者只有列名,没有行名(大多数情况下),那么推荐使用iloc.

根据行列号提取数值
import pandas as pd
fn = 'F:\\leaf data\\WT梧桐\\叶片随角度变化\\WT1_merged.csv'
df = pd.read_csv(fn)
print(df.iloc[1,2])

直接指定行列号,方便快捷,其中的行号不计列名那一行,从数值区域开始。

0.0008421012126865671
提取某些行

第一行,所有列

print(df.iloc[1,:])
incidence angle     10.000000
distance           546.478454
409                  0.000842
425                  0.000836
442                  0.000974
458                  0.000000
474                  0.000000
491                  0.000000
...
882                  0.000000
898                  0.000611
914                  0.000565
Name: 1, dtype: float64
提取某些列

第一行,第4、5列

print(df.iloc[1,4:6])
442    0.000974
458    0.000000
Name: 1, dtype: float64

在这里插入图片描述


  • 9
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值