过滤考拉数据框中的索引值

Filter index values in koalas Data frame

我正在尝试在 kolas 中重新创建以下操作,在 pandas 中,当我在 koalas 中尝试相同的操作时,它会抛出错误。

在 Pandas 中尝试的操作:

df = pd.DataFrame({'foo':['a','b','c','d','e'], 'bar':['1', '2', '3','4','5']})
df1 = pd.DataFrame({'foo':['a','b','c'], 'bar':['1', '2', '3']})

ci = [4,32,12,1]

df[df.index.get_level_values(0).isin(ci)]

输出:

富吧 1 乙 2 4 和 5

在考拉尝试过的操作:

df = ks.DataFrame({'foo':['a','b','c','d','e'], 'bar':['1', '2', '3','4','5']})
df1 = ks.DataFrame({'foo':['a','b','c'], 'bar':['1', '2', '3']})

ci = [4,32,12,1]

df[df.index.get_level_values(0).isin(ci)]

输出: PandasNotImplementedError: 方法 pd.Index.__iter__() 未实现。如果您想将数据收集为 NumPy 数组,请改用 'to_numpy()'。

看起来 Index.get_level_values() 在幕后使用 __iter__(),这在 Koalas 中不受支持。

一些想法:

  1. 为什么需要使用 get_level_values()df[df.index.isin(ci)] 同样有效。

  2. 为缺失标签编制索引的“正确”方法是使用 .reindex()。它会用 NaN 填充新索引中缺失的行,您必须将其删除:

new_df = df.reindex(index=ci).dropna()