簡體   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