0

我正在尝试在 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 b 2 4 e 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()”。

4

1 回答 1

0

看起来像是在幕后Index.get_level_values()使用,考拉不支持。__iter__()

几个想法:

  1. 为什么需要使用get_level_values()呢? df[df.index.isin(ci)]也可以。

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

new_df = df.reindex(index=ci).dropna()
于 2021-08-31T10:21:47.580 回答