Могу ли я прочитать диапазон строк, используя фрейм данных pandas для некоторого значения столбца? - PullRequest
1 голос
/ 11 июля 2020

Это мои данные,

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

Я хочу выбрать все строки от aka sh до vidushi или все строки из Ram От до aman . В реальном сценарии ios будет тысячи строк и несколько столбцов, и я получу несколько запросов для выбора диапазона строк на основе некоторого значения столбца. как я могу это сделать?

Ответы [ 4 ]

1 голос
/ 11 июля 2020

Вот как это сделать ..

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
0 голосов
/ 11 июля 2020

попробуйте 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
0 голосов
/ 11 июля 2020

Создайте несколько переменных (которые вы можете настроить), затем используйте .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
0 голосов
/ 11 июля 2020

Вы можете использовать диапазон для выбора строк

print x[2:4]

#output
akash    103
sakshi   115
vidushi  110
aman     106

Если вы хотите заполнить значения на основе определенного столбца c, вы можете использовать np.where

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...