背景

我的项目正在将熊猫从0.19.2升级到0.21.0。在项目中,我有一个带有一个分类列的DataFrame。我使用get_dummies()对其进行编码,然后使用reindex()过滤列。但是,如果reindex()中的arg列包含未编码的列,则reindex()会失败。

样例代码

以下代码适用于0.19.2,但在0.21.0下失败。

df = pd.DataFrame.from_items([('GDP', [1, 2]),('Nation', ['AB', 'CD'])])
df = pd.get_dummies(df, columns=['Nation'], sparse=True)  # SparseDataFrame
df.reindex(columns=['GDP'])  # Fails :/


错误消息是

df.reindex(columns=['GDP'])
....
TypeError: values must be SparseArray


我希望实现的目标

使用reindex(columns = ...)筛选包含编码和非编码列的选定列。谢谢!

更新(2018-01-17)

GitHub处创建了一个问题。

最佳答案

当然,这似乎是一个错误。从v0.21开始,他们重新设计了许多reindex API,因此似乎某些地方可能出现了问题。

我没有答案,但是我有解决方法,希望它可以解决:您需要先转置,然后重新索引。

df.T.reindex(index=['GDP']).T

   GDP
0    1
1    2

关于python - get_dummies()之后的Pandas 0.21 reindex(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47912449/

10-12 20:22