Pandas,按(多)列值快速访问
基本上,这个问题是“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)]
希望这正是你想要的。如果不是,抱歉哦。