我试图在列中的某个值之前获取很少的记录。我看到了此链接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
我也希望在此之前有记录。对不起,我才刚刚开始学习切片。我被困住了。
答案 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