Pandas,按(多)列值快速访问

-1 投票
1 回答
880 浏览
提问于 2025-04-18 02:22

基本上,这个问题是“pandas有没有类似SQL的多重索引功能?”

具体来说,我想给我的数据框(DataFrame)添加一个(多重)索引,这样我就可以在O(1)的时间内根据列的特定值来访问记录。

下面的脚本可以实现我想要的功能,但不是在O(1)的时间内:

import pandas as pd
import numpy as np
df = pd.DataFrame([[0, 1, 0],[0, 0, 0]], columns=['a', 'b', 'c'])
df[np.logical_and(df['a'] == 0, df['b'] == 1)]

我想知道有没有办法先构建一个数据框的(多重)索引(假设是在O(N)的时间内),然后再在O(1)的时间内访问记录。

1 个回答

2

这个回答可能不太完整,但如果对你有帮助,我还是决定发出来。

你可以通过以下方式给数据框(dataframe)应用多重索引(multiindex):

df.set_index(['a', 'b'], inplace=True)

我不太清楚底层实现的时间复杂度是什么。

你可以使用 ix 方法来访问带有多重索引的数据框中的行,方法如下:

df.ix[(0, 1)]

希望这正是你想要的。如果不是,抱歉哦。

撰写回答