You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从DataFrame的逗号分隔字符串列生成布尔列?

问题描述

我有一个类型为string的column1列,取值格式示例为"some1,some2,some3"。需要基于column1创建some1、some2、some3三个布尔列。

初始DataFrame示例:

column1            |
-------------------+
"some1,some2,some3"|
"some2,some3"      |
"some1"            |
"some1,some3"      |

转换后目标DataFrame:

some1 | some2 | some3 |
------+-------+-------+
True  | True  | True  |
False | True  | True  |
True  | False | False |
True  | False | True  |
解决方案

方法一:使用str.get_dummies快速生成

利用Pandas的字符串处理方法,先去除字符串两端的引号,再按逗号分割生成哑变量,最后转换为布尔类型:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'column1': ['"some1,some2,some3"', '"some2,some3"', '"some1"', '"some1,some3"']
})

# 处理字符串并生成布尔列
bool_columns = df['column1'].str.strip('"').str.get_dummies(sep=',').astype(bool)

# 合并原数据与新生成的布尔列
result = pd.concat([df, bool_columns], axis=1)

方法二:遍历列名用str.contains判断

如果目标列名明确,可直接遍历列名,通过字符串包含判断生成布尔列:

import pandas as pd

df = pd.DataFrame({
    'column1': ['"some1,some2,some3"', '"some2,some3"', '"some1"', '"some1,some3"']
})

target_cols = ['some1', 'some2', 'some3']
for col in target_cols:
    df[col] = df['column1'].str.contains(col)

两种方法都能得到符合要求的结果,方法一适合列名数量较多的场景,方法二更直观易懂。

内容的提问来源于stack exchange,提问作者Vladislav Butko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 10:46:10