在熊猫数据框的字符串类型列上应用 pd.get_dummies()?
Posted
技术标签:
【中文标题】在熊猫数据框的字符串类型列上应用 pd.get_dummies()?【英文标题】:Apply pd.get_dummies() on string type columns of pandas dataframe? 【发布时间】:2022-01-21 01:16:52 【问题描述】:我有以下数据框:
df = pd.DataFrame('a': [6.6, -5.2, 2.1, 3.3, 1.1],
'b': ['a', 'a', 'c', 'b', 'a'],
'c': ['kfr', 'kfr', 'lu', 'ku', 'lu'],
'd': ['t', 's', 's', 't', 'a'])
所有 dtypes(列 b、c、d)都是字符串类型。
如果我先调用df = df.convert_dtypes()
,然后再调用pd.get_dummies()
,什么都不会发生。
但是当我只在数据框的一列上调用它时,它可以工作。
为什么会这样?是bug吗?
【问题讨论】:
什么是问题?pd.get_dummies(df)
返回包含这些列的新数据框:b_a b_b b_c c_kfr c_ku c_lu d_a d_s d_t
所以df = pd.get_dummies(df)
什么都不做?
尝试执行 df = df.convert_dtypes() 并运行 pd.get_dummies(df)
啊!现在我明白你的意思了。您绝对应该将运行 convert_dtypes
的事实添加到问题中,因为这会有所不同。
所以在你运行convert_dtypes
之前,字符串列是dtype('O')
。之后,他们是string[python]
。
【参考方案1】:
经过一番调查,我不知道为什么会发生这种情况,尤其是因为它适用于单列。我猜这是一个错误,因为其中似乎有不少以 pd.NA
类型为中心(convert_dtypes
支持。)
我建议在https://github.com/pandas/pandas-dev 打开错误报告。
【讨论】:
以上是关于在熊猫数据框的字符串类型列上应用 pd.get_dummies()?的主要内容,如果未能解决你的问题,请参考以下文章