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

2024-10-06 09:02:27 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的数据

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

我想选择从akash到vidushi的所有行,或者从Ram到aman的所有行。在实际场景中,将有数千行和多列,我将得到多个查询,以根据某些列值选择一系列行。我该怎么做


Tags: 数据场景ram列值amanlakshayakashsakshi
3条回答

这是做这件事的正确方法

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]可以替换为头的名称,因此如果头名为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

输出:

    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()

输出:

      name  val
0    akash  103
1   sakshi  115
2  vidushi  110

相关问题 更多 >