赞
踩
关于pandas.dataframe.loc与pandas.dataframe.iloc用法官方说明,见官网。
df.loc和df.iloc函数用法的df,由pandas.read_csv()函数读取文件而来。
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]
…
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。