背景
我的项目是将Pandas从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创建了一个问题。
答案 0 :(得分:2)
这当然看起来像个错误。从v0.21开始,他们已经重新设计了很多reindex
API,所以看起来某些地方可能已经破坏了。
我没有答案,但我确实有一个解决方法,希望它应该做:你需要先转置,然后重新索引。
df.T.reindex(index=['GDP']).T
GDP
0 1
1 2