[英]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 从akash到vidushi的所有行或从Ram到aman的所有行。 在实际场景中,会有数千行和多列,我将根据某个列值对 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.