过滤考拉数据框中的索引值
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 中不受支持。
一些想法:
为什么需要使用 get_level_values()
?
df[df.index.isin(ci)]
同样有效。
为缺失标签编制索引的“正确”方法是使用 .reindex()
。它会用 NaN 填充新索引中缺失的行,您必须将其删除:
new_df = df.reindex(index=ci).dropna()
我正在尝试在 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 中不受支持。
一些想法:
为什么需要使用
get_level_values()
?df[df.index.isin(ci)]
同样有效。为缺失标签编制索引的“正确”方法是使用
.reindex()
。它会用 NaN 填充新索引中缺失的行,您必须将其删除:
new_df = df.reindex(index=ci).dropna()