繁体   English   中英

我可以在某些列值上使用 pandas 数据框读取一系列行吗?

[英]Can I read a range of rows using pandas data frame on some column value?

这是我的数据,

prakash  101
Ram      107
akash    103
sakshi   115
vidushi  110
aman     106
lakshay  99

我想 select 从akashvidushi的所有行或从Ramaman的所有行。 在实际场景中,会有数千行和多列,我将根据某个列值对 select 一系列行进行多次查询。 我怎样才能做到这一点?

这是正确的方法..

start = 'akash'
end = 'vidushi'

l = list(df['names']) #ordered list of names
subl = l[l.index(start):l.index(end)+1] #list of names between the start and end

df[df['names'].isin(subl)] #filter dataset for list of names
2   akash   103
3   sakshi  115
4   vidushi 110

创建一些变量(您可以调整),然后使用.loc.index[0] (注意: df[0]可以替换为您的 header 的名称,所以如果您的 header 被称为Names ,然后更改所有实例df[0]df['Names']

var1 = 'Ram'
var2 = 'aman'
a = df.loc[df[0]==var1].index[0]
b = df.loc[df[0]==var2].index[0]
c = df.iloc[a:b+1,:]
c

output:

    0       1
1   Ram     107
2   akash   103
3   sakshi  115
4   vidushi 110
5   aman    106

尝试set_index然后使用loc

df = pd.DataFrame({"name":["prakash","Ram","akash","sakshi","vidushi","aman","lakshay"],"val":[101,107,103,115,110,106,99]})
(df.set_index(['name']).loc["akash":"vidushi"]).reset_index()

output:

      name  val
0    akash  103
1   sakshi  115
2  vidushi  110

您可以使用 select 行的范围

print x[2:4]

#output
akash    103
sakshi   115
vidushi  110
aman     106

如果要根据特定列填充值,可以使用np.where

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM