Pandas 如何索引上一个小于某个指定值的值

Pandas 如何索引上一个小于某个指定值的值,pandas,Pandas,我有一个如下所示的数据框 d = {'one': [1., 2., 3., 4.,5.,6], 'two': [4., 3., 2., 1.,-1,-2]} df = pd.DataFrame(d, index=['201305', '201305', '201307', '201307', '201307','201308']) 当给我一个字符串'201307'时,我希望得到的最后一个值小于给定字符串'201307','201305' 如何编写代码。首先,当数字存储为字符串时,不要使用字符串

我有一个如下所示的数据框

d = {'one': [1., 2., 3., 4.,5.,6], 'two': [4., 3., 2., 1.,-1,-2]}
df = pd.DataFrame(d, index=['201305', '201305', '201307', '201307', '201307','201308'])
当给我一个字符串
'201307'
时,我希望得到的最后一个值小于给定字符串
'201307'
'201305'


如何编写代码。

首先,当数字存储为字符串时,不要使用字符串。数值计算比字符串计算快得多。第二,这是一个容易解决的问题。只需按索引排序,然后检查:

df.index = df.index.astype(int)
df.sort_index(inplace=True)
df[df.index < int(given_value)].iloc[-1, :]
df.index=df.index.astype(int)
df.sort_索引(inplace=True)
df[df.index
用于删除重复条目,并仅保留它遇到的第一个条目,以获得给定标签的整数位置,用作掩码。从中扣除1以获得其独特的先前标签

>>> idx = df.index.drop_duplicates()
>>> val = idx[idx.get_loc('201307') - 1]    # <------ Insert query here
>>> val
'201305'

使用arg
method=bfill/backfill
处理不存在的匹配项。对于这种情况,它会立即获取下一个匹配的索引值

>>> val = idx[idx.get_loc('201306', method='bfill') - 1]   # Here, '201307' is selected 
>>> val
'201305'

,你的答案正是我想要的。非常感谢。请问,如果给定的字符串是'201306',如何更新'201305'。请查收。我真的很感激你的第一个建议。不过,我更喜欢Nickil Maveli对第二个问题的回答。非常感谢。
>>> val = idx[idx.get_loc('201306', method='bfill') - 1]   # Here, '201307' is selected 
>>> val
'201305'