当前位置:   article > 正文

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

df.loc用法

关于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'])
  • 1
  • 2
  • 3
  • 4
0.0008421012126865671
  • 1

此方法不一定每次都行,在代码中经常遇到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行
  • 1
  • 2
  • 3
  • 4
  • 5
   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]
  • 1
  • 2
  • 3
  • 4
  • 5
print(df.loc[[1,3]])
  • 1

   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]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
提取某些列

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])
  • 1
  • 2
  • 3
  • 4

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

0.0008421012126865671
  • 1
提取某些行

第一行,所有列

print(df.iloc[1,:])
  • 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
提取某些列

第一行,第4、5列

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

在这里插入图片描述


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/210276
推荐阅读
相关标签
  

闽ICP备14008679号