我有一个数据框,其中包含约300个小型企业的信息。该列'Business_Model'
如下所示:
0 B2B business to business (companies sell to co...
1 B2B business to business (companies sell to co...
2 B2B2C business to business to consumer (compan...
3 B2B business to business (companies sell to co...
4 B2C business to consumer (the final client is ...
Name: Modelo_de_Negocio, dtype: object
此列具有数十个唯一值,因为每个单元格的内容可以是不同业务模型的组合(例如,一家公司可以作为B2B和B2C经营,而另一个可以是B2B,B2C和B2B2C)。
我想将此列中的数据转换为布尔列,每个业务模型一个,以便获得类似
display (df[[B2B, B2C, C2C, B2G, B2B2C]])
B2B B2C C2C B2G B2B2C
0 True False False False False
1 False True True True True
2 False False True False True
3 True False False False False
4 False True False False True
我该怎么办?如果可以删除值中多余的文本'Business_Model'
并仅保留首字母(例如B2B, B2C
),则可以将其拆分为新的布尔列,但是我不知道如何以一种聪明的方式在此列中编辑字符串值。
如果值以列开头使用:
df = pd.get_dummies(df['Modelo_de_Negocio'].str.split().str[0], dtype=bool)
print (df)
B2B B2B2C B2C
0 True False False
1 True False False
2 False True False
3 True False False
4 False False True
如果值不总是出现在每个字符串的开头,则Series.str.findall
用于获取以下B
一位数字或大写值开头的所有字符串,然后使用Series.str.join
和Series.str.get_dummies
,最后将值转换为布尔值:
df = (df1['Modelo_de_Negocio'].str.findall('(B[A-Z0-9]+)')
.str.join('|')
.str.get_dummies()
.astype(bool))
print (df)
B2B B2B2C B2C
0 True False False
1 True False False
2 False True False
3 True False False
4 False False True
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句