当多字符字符串中类别为单字符时,基于Pandas Series生成哑变量的最简方法
把Pandas Series中多字符字符串的单个字符转成哑变量的简洁方法
嘿,这个需求我太熟了!其实用Pandas自带的字符串方法就能一行搞定,完全不需要复杂的循环或者额外的处理逻辑。
核心方法:str.get_dummies(sep='')
Pandas的str.get_dummies本来是用来处理带分隔符的字符串生成哑变量的,只要把分隔符sep设为空字符串,它就会自动把每个字符串拆成单个字符,然后为每个出现过的字符生成对应的哑变量列——存在该字符的行标1,不存在则标0。
完整示例
先看一个实际的例子,假设我们有这样的Series:
import pandas as pd # 示例数据,包含不同长度的多字符字符串,甚至空字符串 s = pd.Series(['abc', 'abd', 'a', 'bc', ''])
直接一行代码生成哑变量:
dummy_df = s.str.get_dummies(sep='')
输出结果如下:
a b c d 0 1 1 1 0 1 1 1 0 1 2 1 0 0 0 3 0 1 1 0 4 0 0 0 0
额外说明
- 如果你的Series里有非字符串类型的数据,记得先转成字符串:
s = s.astype(str) - 就算字符串里有重复字符(比如
'aab'),这个方法也会自动处理为“存在即1”,完全符合哑变量的定义;如果需要统计字符出现次数,可以改用其他方法,但这个场景下str.get_dummies(sep='')是最优解 - 所有出现过的单个字符都会成为独立的列,不管是字母、数字还是特殊符号
这个方法绝对是最简洁的,完全利用Pandas的内置功能,代码少且可读性高。
内容的提问来源于stack exchange,提问作者piRSquared
相关产品推荐
相关产品推荐

