美文网首页Python 专题
Pandas字符串函数split()

Pandas字符串函数split()

作者: 米小河123 | 来源:发表于2019-11-27 15:21 被阅读0次

    我们在日常工作中经常遇到数据分列的问题,今天跟大家分享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()的用法类似,一个从右边开始,一个从左边开始。

    相关文章

      网友评论

        本文标题:Pandas字符串函数split()

        本文链接:https://www.haomeiwen.com/subject/cjppwctx.html