在熊猫数据框的字符串类型列上应用 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()?的主要内容,如果未能解决你的问题,请参考以下文章

多个熊猫数据框的交集

熊猫:在groupby之后重新塑造/重新转动数据框

如何根据在熊猫数据框中的其他列上应用条件来提取列值

熊猫移动平均线[重复]

如何在熊猫数据框的行之间应用多个条件创建目标数据框

对熊猫数据框的列应用差异[重复]