Python 专题

Pandas字符串函数split()

2019-11-27  本文已影响0人  米小河123

我们在日常工作中经常遇到数据分列的问题,今天跟大家分享pandas的split()函数的基本用法:
我们创建了一个简单的dataframe,数据如下:

In [1] import pandas as pd
....: data = {'brand_model': ['德力西 GW912200', '埃帝尔 IB-207TPN-06231C02', '德力西 72LT3YFM40D', '科顺 2-3654-561 铆钉型'],
        'cate':['低压', '管阀', '低压', '搬运']}
....: df_data = pd.DataFrame(data)
....: print(df_data)

Out[1]: 
              brand_model cate
0            德力西 GW912200   低压
1  埃帝尔 IB-207TPN-06231C02   管阀
2         德力西 72LT3YFM40D   低压
3       科顺 2-3654-561 铆钉型   搬运

其中列'brand_model'需要拆分成2列:brand和model。我们看到brand和model之间是空格,所以我们可以这样来实现拆分:

In [2]: df_data['brand_model'].str.split(' ', 1, expand=True)
Out[2]: 
     0                   1
0  德力西            GW912200
1  埃帝尔  IB-207TPN-06231C02
2  德力西         72LT3YFM40D
3   科顺      2-3654-561 铆钉型

注意:Series数据类型没有split()函数,所以需要先用.str将这一列转换为类似字符串的格式,然后再使用split()函数。

然后使用merge函数连接:

In [3]: pd.merge(df_data, df_data['brand_model'].str.split(' ', 1, expand=True), how='left', left_index=True, right_index=True)
Out[3]: 
              brand_model cate    0                   1
0            德力西 GW912200   低压  德力西            GW912200
1  埃帝尔 IB-207TPN-06231C02   管阀  埃帝尔  IB-207TPN-06231C02
2         德力西 72LT3YFM40D   低压  德力西         72LT3YFM40D
3       科顺 2-3654-561 铆钉型   搬运   科顺      2-3654-561 铆钉型

split()函数讲解:
split`(*self*, *pat=None*, *n=-1*, *expand=False*)
pat:分列的依据,可以是空格,符号,字符串等等。
n:分列的次数,不指定的话就会根据符号的个数全部分列。
expand:为True可以直接将分列后的结果转换成DataFrame。
如果想要从最右边开始分列,可以使用rsplit()rsplit()split()的用法类似,一个从右边开始,一个从左边开始。

上一篇下一篇

猜你喜欢

热点阅读