在按位置访问行时,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
)?
答案 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与位置值一起使用到索引中......