在get_dummies()

时间:2017-12-20 18:40:35

标签: python pandas dataframe

背景

我的项目是将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创建了一个问题。

1 个答案:

答案 0 :(得分:2)

这当然看起来像个错误。从v0.21开始,他们已经重新设计了很多reindex API,所以看起来某些地方可能已经破坏了。

我没有答案,但我确实有一个解决方法,希望它应该做:你需要先转置,然后重新索引。

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

   GDP
0    1
1    2