示例数据框:
value
ind
1 2.3
3 4.4
5 3.3
7 6.6
然后我切片:
df.loc[2:4]
默认输出将是:
3 4.4
但我希望包括上限和下限值:
1 2.3
3 4.4
5 3.3
有没有一种不需要额外逻辑的内置方法?
最佳答案
简短回答:否
.loc[]
方法查找等于或大于切片起始值的第一个索引值,反之则查找切片终止值。
如果您需要额外的逻辑(评估起始值是否完全匹配,如果没有,则获取下一个最佳的较低值,以及与停止值等效的值),您必须使用自己的代码来执行此操作(至少不是 pandas 内置的,网上可能已经有解决方案)
工作 stub (没有异常处理等,假设 df 按整数索引排序,如果命中第一行或最后一行则失败):
def loc2(df, start, stop):
r = df.loc[start:stop]
if r.index[0]>start:
start=df.index.to_list()[df.index.to_list().index(r.index[0])-1]
if r.index[-1]<stop:
stop=df.index.to_list()[df.index.to_list().index(r.index[-1])+1]
return df.loc[start:stop]
关于python - 如果请求的索引位于整数索引标签之间,pandas 数据框中是否有内置方法来包含切片的下一个/上一个行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67019274/