Python 获取虚拟对象()后的熊猫0.21 reindex()

Python 获取虚拟对象()后的熊猫0.21 reindex(),python,pandas,dataframe,Python,Pandas,Dataframe,背景 我的项目正在从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.g

背景

我的项目正在从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)


在创建了一个问题。

这看起来确实像一个bug。从v0.21开始,他们已经修改了大量的
reindex
API,所以似乎有什么地方出了问题

我没有答案,但我有一个解决办法,希望它能做到:首先需要转置,然后重新索引


看起来像是一个bug,我想说,现在可能会继续使用旧版本…从pandas.pydata.org,看起来reindex()API是在0.21.0下重新编写的
df.T.reindex(index=['GDP']).T

   GDP
0    1
1    2