获取特定列值之前的记录数

时间:2018-06-27 14:27:47

标签: python pandas

我试图在列中的某个值之前获取很少的记录。我看到了此链接Get number of rows before and after a certain index value in pandas,但这具有基于索引的解决方案。我想在列值上实现它。

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 :(得分:0)

您需要使用.idxmax()来获取FlowSession的第一个出现位置,然后切成该位置。

string1

输出:

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

答案 1 :(得分:0)

此解决方案假定您的索引是连续且递增的。如果.reset_index()不连续,则可以执行。它还在col1中找到v1的第一次出现。希望这会有所帮助:

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