![](/img/trans.png)
[英]How to extract certain parts of a string from column to create other columns in 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.