我正在使用 df.loc[(key1, key2)]
索引一个大型多索引熊猫 df。有时我得到一个系列(如预期的) ,但其他时候我得到一个数据帧。我试图分离出导致后者的病例,但到目前为止,我所能看到的是,它与获得 PerformanceWarning: indexing past lexsort depth may impact performance
警告相关。
我想复制到这里发布,但我不能生成另一个案件,给我同样的警告。这是我的尝试:
def random_dates(start, end, n=10):
start_u = start.value//10**9
end_u = end.value//10**9
return pd.to_datetime(np.random.randint(start_u, end_u, n), unit='s')
np.random.seed(0)
df = pd.DataFrame(np.random.random(3255000).reshape(465000,7)) # same shape as my data
df['date'] = random_dates(pd.to_datetime('1990-01-01'), pd.to_datetime('2018-01-01'), 465000)
df = df.set_index([0, 'date'])
df = df.sort_values(by=[3]) # unsort indices, just in case
df.index.lexsort_depth
> 0
df.index.is_monotonic
> False
df.loc[(0.9987185534991936, pd.to_datetime('2012-04-16 07:04:34'))]
# no warning
所以我的问题是: 是什么导致了这个警告? 我如何人工诱导它?