python - get_dummies() 用于多个 Pandas DataFrame

标签 python pandas

我有一个 DataFrame 列表,我想对某些列进行一次性编码。例如,如果:

In[1]:  df1 = pd.DataFrame(np.array([['a', 'a'], ['b', 'b'], ['c', 'c']]), 
                   columns=['col_1', 'col_2'])
        df2 = pd.DataFrame(np.array([['a', 'a'], ['b', 'b'], ['c', 'c']]),
                   columns=['col_1', 'col_2'])

        combined = [df1, df2]
        combined


Out[1]:    col_1  col_2
        0      a      a
        1      b      b
        2      c      c

我目前正在使用以下方法。

In[2]:  for df in combined:
            one_hot = pd.get_dummies(df["col_2"])

            df[one_hot.columns] = one_hot
            df.drop("col_2", axis=1, inplace=True)

        
        df1

Out[2]:      col_1   a   b   c
          0      a   1   0   0
          1      b   0   1   0 
          2      c   0   0   1

我是否缺少更简洁的解决方案?


编辑

一个重要的要求是我需要修改原始数据框。

最佳答案

OP的方法就好了

for df in combined:
    one_hot = pd.get_dummies(df["col_2"])

    df[one_hot.columns] = one_hot
    df.drop("col_2", axis=1, inplace=True)

重新分配给所有名称

df1, df2 = [df.join(pd.get_dummies(df['col_2'])).drop('col_2', 1) for df in combined]

关于python - get_dummies() 用于多个 Pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56151188/

相关文章:

python - 从 S3 读取 KMS 加密文件

python - 如何转换时间范围(19 :00-20:00) to a TimeStamp/Date Time object?

python - 如何将 csv 文件的第二列转换为 float 列表?

python - 如何通过ansible从shell命令的标准输出中删除换行符

python - 如何查询名称包含python列表中任何单词的模型?

python - 遍历文件中的行时进行循环?

python - 将 bool 检查与 & 结合起来不会 "short-circuts"吗?

python - 转换为 numpy 后如何 reshape pandas 系列?

python - 分解字符串列并计算字符频率

python - 是否有与 Python 的 pandas.merge_asof 等效的 R 语言?