pandas 如何在多个列上拆分和分解str?

hgqdbh6s  于 2023-05-15  发布在  其他
关注(0)|答案(2)|浏览(142)

有没有一种方法可以在多个列上拆分和分解?这可能是一个基本的任务,但我现在一片空白,
My pandas dataframe:
| 姓名|标题|城市|国家|来源|
| --------------|--------------|--------------|--------------|--------------|
| 哈利·威尔斯|数据科学家;数据分析员;数学家|巴黎;苏瓦;巴黎|斐济;法国|联系我们|
| 布朗·利维|数据科学家;数据分析师|赫尔辛基;柏林|芬兰;德国|Kaggle|
| 格蕾丝·卡利|数据分析员;数学家|雅典;布达佩斯|希腊;匈牙利|Kaggle|
| 埃文·詹姆斯|ML工程师;开发人员|东京;利马|日本;秘鲁|谷歌|
目前,我的代码一次只能处理一列:

df2 =(df.set_index(['Name','Source']) #Columns that won't be touched by the index
 .apply(lambda x: x.str.split(';').explode()) #split on the ; [its actually a pipe(|) but for visual purposes I used a ;]
 .reset_index())

**注意:上面的代码通常对我有用,但我通常在一列上使用它。

所需输出:
| 姓名|标题|城市|国家|来源|
| --------------|--------------|--------------|--------------|--------------|
| 哈利·威尔斯|数据科学家|巴黎|法国|联系我们|
| 哈利·威尔斯|数据分析师|苏瓦|斐济|联系我们|
| 哈利·威尔斯|数学家|巴黎|法国|联系我们|
| 布朗·利维|数据科学家|赫尔辛基|芬兰|Kaggle|
| 布朗·利维|数据分析师|柏林|德国|Kaggle|
| 格蕾丝·卡利|数据分析师|雅典|希腊|Kaggle|
| 格蕾丝·卡利|数学家|布达佩斯|匈牙利|Kaggle|
| 埃文·詹姆斯|ML工程师|东京|日本|谷歌|
| 埃文·詹姆斯|开发人员|利马|秘鲁|谷歌|

vpfxa7rd

vpfxa7rd1#

首先拆分,然后执行普通的多列分解。例如:

cols = ['Title', 'City', 'Country']
df.assign(**{c: df[c].str.split('; ') for c in cols}).explode(cols)
Name           Title      City  Country    Source
0  Haliey Wells  Data Scientist     Paris   France  Linkedin
0  Haliey Wells    Data Analyst      Suva     FIJI  Linkedin
0  Haliey Wells   Mathematician     Paris   France  Linkedin
1     Bron Levy  Data Scientist  HELSINKI  Finland    Kaggle
1     Bron Levy    Data Analyst    Berlin  Germany    Kaggle
2   Grace Kalie    Data Analyst    Athens   Greece    Kaggle
2   Grace Kalie   Mathematician  Budapest  Hungary    Kaggle
3    Evan James     ML Engineer     Tokyo    Japan    Google
3    Evan James       Developer      Lima     Peru    Google
wmomyfyw

wmomyfyw2#

下面是另一种使用apply而不是字典理解和解包的方法:

df.set_index(['Name', 'Source'])\
  .apply(lambda x: x.str.split(';'))\
  .explode(column=df.columns[1:-1].tolist()).reset_index()

输出:

Name    Source            Title        City    Country
0  Haliey Wells   Linkedin   Data Scientist       Paris     France
1  Haliey Wells   Linkedin     Data Analyst        Suva       FIJI
2  Haliey Wells   Linkedin   Mathematician       Paris     France 
3     Bron Levy     Kaggle   Data Scientist    HELSINKI    Finland
4     Bron Levy     Kaggle    Data Analyst      Berlin    Germany 
5   Grace Kalie     Kaggle     Data Analyst      Athens     Greece
6   Grace Kalie     Kaggle   Mathematician    Budapest    Hungary 
7    Evan James     Google      ML Engineer       Tokyo      Japan
8    Evan James     Google       Developer        Lima       Peru

相关问题