我有pandas DataFrame
import pandas as pd
import numpy as np
df = pd.DataFrame({
'x': ['a', 'b', 'c'],
'y': [1, 2, 2],
'z': ['f', 's', 's']
}).set_index('x')
Run Code Online (Sandbox Code Playgroud)
从中我想根据x选择数组中index()的值选择行
selection = ['a', 'c', 'b', 'b', 'c', 'a']
Run Code Online (Sandbox Code Playgroud)
通过使用df.loc如下可以获得正确的输出
out = df.loc[selection]
Run Code Online (Sandbox Code Playgroud)
我df.loc遇到的问题是在大型DataFrame(2-7百万行)上运行速度很慢.有没有办法加快这个操作?我已经研究过eval(),但它似乎不适用于这样的索引值的硬编码列表.我也考虑过使用pd.DataFrame.isin,但是错过了重复值(每个唯一元素只返回一行selection).