通过基于“\”拆分文本来替换列

2024-07-02 10:00:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据框,如下所示

import pandas as pd
df = pd.DataFrame({'col':['abcfg_grp_202005', 'abcmn_abc_202009', 'abcgd_xyz_8976', 'abcgd_lmn_1']})
df

    col
0   abcfg_grp_202005
1   abcmn_abc_202009
2   abcgd_xyz_8976
3   abcgd_lmn_1

我想将“col”替换为“col”之前的第一个实例。如果uu之后的第3个实例中有一个位数,则将其附加到“col”的末尾,如下所示

    col
0   abcfg
1   abcmn
2   abcgd
3   abcgd_1

Tags: 数据实例importpandasdfascolpd
3条回答

您可以使用^{}

In [1441]: df['col'] = df.col.str.split('_', expand=True).apply(lambda x: (x[0] + '_' + x[2]) if len(x[2]) == 1 else x[0], axis=1)

In [1442]: df
Out[1442]: 
       col
0    abcfg
1    abcmn
2    abcgd
3  abcgd_1

您可以应用自定义函数

import pandas as pd
df = pd.DataFrame({'col':['abcfg_grp_202005', 'abcmn_abc_202009', 'abcgd_xyz_8976', 'abcgd_lmn_1']})
def func(x):
    ar = x.split('_')
    if len(ar[2]) == 1 and ar[2].isdigit():
        return ar[0]+"_"+ar[2]
    else:
        return ar[0]
    
df['col'] = df['col'].apply(lambda x: func(x))
df

    col
0   abcfg
1   abcmn
2   abcgd
3   abcgd_1

在下划线上拆分,然后添加字符串。这里我们可以使用False乘以字符串返回空字符串的技巧来处理条件加法。检查是一个1字符的数字字符串

df1 = df['col'].str.split('_', expand=True)
df['col'] = df1[0] + ('_' + df1[2])*(df1[2].str.len().eq(1) & df1[2].str.isdigit())

print(df)

       col
0    abcfg
1    abcmn
2    abcgd
3  abcgd_1

相关问题 更多 >