Получить количество записей перед определенным значением столбца - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь получить несколько записей до определенного значения в столбце. Я видел эту ссылку Получить количество строк до и после определенного значения индекса в пандах , но это решение основано на индексе. Я хочу реализовать это по значению столбца.

import pandas as pd
d = {'col1': ['abc','bcd','string1','string2','jkl','opq']}
dfx=pd.DataFrame(d)

v1="string1"
history=pd.DataFrame()
history=history.append(dfx.loc[dfx['col1']==v1],ignore_index=True)
history

Этот код дает мне только соответствующую запись.

col1
string1

Я хочу:

col1
abc
bcd
string1

Я тоже хочу записи до этого. Извините, я только начал изучать нарезку. Я застрял.

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Это решение предполагает, что ваш индекс непрерывный и возрастающий. Вы можете сделать .reset_index(), если оно не непрерывно. Он также находит первое вхождение v1 в столбце col1. Надеюсь, это поможет:

import pandas as pd
d = {'col1': ['abc','bcd','string1','string2','jkl','opq']}
dfx=pd.DataFrame(d)

v1="string1"
history=pd.DataFrame()

# Get the FIRST index where col1 is equal to v1
v1_idx = dfx[dfx.col1 == v1].index[0]

# Make a list of indices to select 
select_idx = np.arange(0,v1_idx+1)

# Take subset and reset index
history=dfx.loc[dfx.index.isin(select_idx)].reset_index(drop=True)
history
0 голосов
/ 27 июня 2018

Вам нужно использовать .idxmax(), чтобы получить первое вхождение string1, а затем нарезать на эту позицию.

history = dfx.iloc[:(dfx['col1']==v1).idxmax()+1]

Выход:

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