【发布时间】:2019-07-29 17:00:05
【问题描述】:
我有一个数据集包含多个二进制值。
df = pd.DataFrame({"a": ["y", "n"], "b": ["t", "f"],
"c": ["known", "unknown"], "d": ['found', 'not found']})
我想将所有二进制列替换为 1/0,同时不影响其他数字列。有没有使用一两条线的简单解决方案?数据集包含 500 多列,很难一一检查和替换。谢谢。
【问题讨论】:
-
欢迎来到 SO。请查看How to Ask,并创建一个minimal reproducible example。这意味着没有损坏的示例代码供其他人测试。您当前的示例代码不是有效的python,因此很难提供帮助。
-
astype('category')? -
如果这些只是二进制文件,并且您并不特别在意选择哪一个:
pd.get_dummies(df).iloc[:, ::2]。否则,请提供更完整的示例和您需要的说明。 -
或
df.assign(**df.select_dtypes(object).apply(lambda c: c.factorize()[0])) -
但是对于“其他 500 列”,我们需要更多的约束。 every 对象列是否保证是您需要转换的二进制列?如果没有,我认为您至少需要一些模式或特定列的列表来进行转换。或者我们可以试试
nunique == 2?
标签: python pandas binary multiple-conditions