![](/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.