美文网首页
pandas 对字符串处理

pandas 对字符串处理

作者: 黄yy家的jby | 来源:发表于2020-04-13 11:06 被阅读0次
    import pandas as pd
    import numpy as np
    
    df_test = pd.DataFrame({'test_value':['a1','aa1','b1','b2','A2','AA2','Aa2',\
                                          'are u ok','u are not ok','uu are okey']})
    
    df_test.png

    -1. str.contains(pat, case=True, flags=0, na=False, regex=True )

    pat : str类型
    字符序列或正则表达式。

    case : bool,默认为True
    如果为True,区分大小写。

    flags : int,默认为0(无标志)
    标志传递到re模块,例如re.IGNORECASE。

    na : 默认NaN
    填写缺失值的值。

    regex : bool,默认为True
    如果为True,则假定pat是正则表达式。

    如果为False,则将pat视为文字字符串。

    -2. 正则表达

    pattern = '[a-z][0-9]' 
    a = df_test[df_test['test_value'].str.contains(pattern,na=True)]
    
    pattern2 = '(.*?)are(.*?)'
    b = df_test[df_test['test_value'].str.contains(pattern2,na=False)]
    

    [a-z] 表示小写字母a-z
    [0-9] 表示数字0-9
    (.*?)表示若干元素


    df_test2.PNG

    -3. startswith, endswith

    c = df_test[df_test['test_value'].str.startswith('are',na=False)]
    d = df_test[df_test['test_value'].str.endswith('ok',na=False)]
    
    df_test3.PNG

    - 4.不包含

    用~或 == False

    pattern = '[a-z][0-9]' 
    e = df_test[~df_test['test_value'].str.contains(pattern,na=True)]
    f = df_test[(df_test['test_value'].str.contains(pattern,na=True)==False)]
    
    df_test.png

    -5. 多个str选择

    用 |

    g = df_test[df_test['test_value'].str.contains('are|u',na=False)
    

    -6. 字符串合并

    s = pd.Series(['a', 'b', 'c', 'd'], dtype="string")
    s.str.cat(sep=',')

    Out: 'a,b,c,d'

    t = pd.Series(['a', 'b', np.nan, 'd'], dtype="string")
    t.str.cat(sep=',', na_rep='-')

    Out[61]: 'a,b,-,d'

    同时可以一个多个series进行合并:
    s.str.cat(t,sep='-')
    s.str.cat(pd.concat([s,t]),sep='-')
    list: '-'.join([///])

    -7.字符串分割

    s.str.split('-',expand=True)[0]

    -8.字符替代

    s = s.replace('a','b') # a替换成b
    s = s.replace(['\N', 'nan'],[np.nan,np.nan])
    s = s.replace(',','、',regex=True) #正则替代

    -9.series 前后加字符

    '持有'+df_temp['CODE']+','+df_temp['占净值比']
    

    输出:
    持有9988 HK EQUITY,占组合净值比X%
    持有BABA US EQUITY,占组合净值比X%

    相关文章

      网友评论

          本文标题:pandas 对字符串处理

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