我试着在科拉斯重现下面的操作,当我在考拉身上尝试同样的操作时,它会抛出一个错误。
在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)]
输出:
foo bar 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()”。
发布于 2021-08-31 10:21:47
看起来Index.get_level_values()
在幕后使用__iter__()
,而考拉不支持这一点。
几个想法:
get_level_values()
呢?df[df.index.isin(ci)]
也同样有效。.reindex()
。它将用NaNs填充新索引中缺少的行,您必须删除NaNs:new_df = df.reindex(index=ci).dropna()
https://stackoverflow.com/questions/68996530
复制相似问题