繁体   English   中英

如何在 Pandas 列中查找和提取部分字符串并将其编码到新列中

[英]How to find and extract parts of a string in a Pandas column and encode it into new columns

我有一个 Pandas dataframe 的列,如下所示:

ID 语言
01 西班牙语 - C1
02
03 西班牙语 - B2
04 西班牙语 - C1 / 德语 - C1 / 葡萄牙语 - C1
05
06 德国C2
07
08 西班牙语 - B2 / 葡萄牙语 - C1

每个 id 可以没有语言('No'),它可以有一种语言后跟它的级别(例如'西班牙语 - B2')或者它可以有几种语言,它们的级别由“/”符号分隔(例如。“意大利语-B1 / 葡萄牙语-C2").

这个想法是使用“语言”列中的信息在新列中进行编码。 例如,像这样:

ID 没有_lang 西班牙语 - B2 西班牙语 - C1 德语 - C1 德语 - C2 葡萄牙语 - C1
01 0 0 1个 0 0 0
02 1个 0 0 0 0 0
03 0 1个 0 0 0 0
04 0 0 1个 1个 0 1个
05 1个 0 0 0 0 0
06 0 0 0 0 1个 0
07 1个 0 0 0 0 0
08 0 1个 0 0 0 1个

如果有多种语言,它们总是按字母顺序出现。

我想这很复杂,我不知道从哪里开始。

提前致谢! 任何帮助表示赞赏!

一个可能的解决方案,基于pandas.crosstab

df['language'] = df['language'].str.split(' / ')
df = df.explode('language')
pd.crosstab(index=df['Id'], columns=df['language'])

Output:

language  German - C1  German C2  No  Portuguese - C1  Spanish - B2  \
Id                                                                    
1                   0          0   0                0             0   
2                   0          0   1                0             0   
3                   0          0   0                0             1   
4                   1          0   0                1             0   
5                   0          0   1                0             0   
6                   0          1   0                0             0   
7                   0          0   1                0             0   
8                   0          0   0                1             1   

language  Spanish - C1  
Id                      
1                    1  
2                    0  
3                    0  
4                    1  
5                    0  
6                    0  
7                    0  
8                    0  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM