【发布时间】:2021-10-20 07:40:48
【问题描述】:
- 我有一个包含不同列的 Pandas 数据框。
- 有些列只是“是”或“否”的答案,我需要用 1 和 0 替换
- 有些列是 1 和 2,其中 2 等于否 - 这 2 需要替换为 0
- 其他列是数字类别,例如 1、2、3、4、5,其中 1 = 狮子 2 = 狗
- 其他列是字符串类别,例如:“A lot”、“A little”等
- 前 2 列是目标变量
我的问题问题:
- 如果我只是将数据框中的所有 2 更改为 0,它最终会更改目标变量中的 2(在这种情况下,它充当分数而不是“否”)
- 另一个问题是类别为数字的列也会将其 2 更改为 0
我怎样才能清理这个数据框,以便 2.所有带有yes或1的列以及那些带有no或2的列->变成1和0 3. 两个目标变量 -> 保持 1-5 的分数 4. 在我对它们进行 onehot 编码之前,所有分类变量都保持不变。
这些是我采取的步骤:
- 将所有“是”或“否”更改为 0 和 1 df.replace(('Yes', 'No'), (1, 0), inplace=True)
- 现在为了用 0 替换所有充当“否”的 2 -
- 不影响前两个目标列中作为分数的“2”
- 也不是在具有 2 个以上唯一值的列中充当类别值的“2”,我想我需要结合以下两行代码,对吗?我正在尝试不同的方法来组合它们,但我不断收到错误
df.loc[:, df.nunique()
【问题讨论】:
-
只需使用
df[column_name].replace(...)即可仅使用选定的列
标签: python pandas dataframe numeric categorical-data