使用position,获取Pandas Series中默认值的get()

时间:2016-07-08 08:32:44

标签: python pandas

在按位置访问行时,Pandas有没有办法获取默认值?我知道.get()函数,但按索引搜索时可以正常工作。

以下是我想要做的事情。 DataFrame:

In [24]: df
Out[24]:
    col1
idx
20     A
21     B
22     C
23     D
24     E

按索引搜索并获取默认值可以正常工作:

In [25]: df['col1'].get(23, 'the_default_value')
Out[25]: 'D'

In [26]: df['col1'].get(28, 'the_default_value')
Out[26]: 'the_default_value'

但似乎没有一种等效的方式来搜索位置。我可以使用.iloc(),但如果该行不存在则无法获取默认值。例如

In [57]: df['col1'].iloc[2]
Out[57]: 'C'

In [58]: df['col1'].iloc[6]
...
IndexError: single positional indexer is out-of-bounds

我可以使用try...except进行设置,或事先检查该值是否存在,但有更简洁的方法,例如.iget()(如.loc vs .iloc)?

2 个答案:

答案 0 :(得分:0)

这样的事情会被认为更清洁:

df['new_index'] = np.arange(df.shape[0])
df = df.set_index('new_index', append=True)

df['col1'].get((pd.IndexSlice[:], 2), 'the_default_value')

如果需要原始索引,则使用多索引

可能很有用
{{1}}

答案 1 :(得分:0)

好的,我得到了另一个答案:

n = 2
df['col1'].get(df.index[n] if n < df.shape[0] else None, 'hi')

因此,将get与位置值一起使用到索引中......