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].
Python3 df.loc和df.iloc函数用法及提取指定行列位置处数值_第1张图片

如该表:

Python3 df.loc和df.iloc函数用法及提取指定行列位置处数值_第2张图片
该表首行为列名,没有行名。
如要输出数值第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,如此刻的一个大段代码中就出现了问题。

Python3 df.loc和df.iloc函数用法及提取指定行列位置处数值_第3张图片
用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

Python3 df.loc和df.iloc函数用法及提取指定行列位置处数值_第4张图片


你可能感兴趣的:(Python,df.loc,df.iloc,csv读取,pandas,dataframe)