我试图弄清楚如何在 pandas 元素中拆分字符串,然后重新组合拆分字符串的一部分。我有以下代码:
import pandas as pd
df = pd.DataFrame({'code': ['PC001-S002_D_CFI4-1_NN','PC001-S002_D_CFI4-1_NN','PC001-S002_D_CFI4-1_NN',
'PC001-S002_D_CFI4-1_ER','PC001-S002_D_CFI4-1_ER','PC001-S002_D_CFI4-1_ER']})
df['domain'] = df['code'].str.split("_")
此代码用于根据下划线分割字符串。现在我想获取列中生成的拆分列表并重新组合前三个元素,以便:
PC001-S001_D_CFI4-1_NN ==> PC001-S001_D_CFI4-1
如果我只是使用以下方法应用于字符串,我可以这样做:
a = 'PC001-S002_D_CFI4-1_NN'
b = a.split("_")[0:3]
c = "_".join(b)
然而,我尝试将其应用于熊猫,但没有取得太大成功。
任何建议都会受到极大的欢迎。
您可以使用系列.str.rsplit(...) https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.rsplit.html:
In [11]: df['domain'] = df['code'].str.rsplit('_',1).str[0]
In [12]: df
Out[12]:
code domain
0 PC001-S002_D_CFI4-1_NN PC001-S002_D_CFI4-1
1 PC001-S002_D_CFI4-1_NN PC001-S002_D_CFI4-1
2 PC001-S002_D_CFI4-1_NN PC001-S002_D_CFI4-1
3 PC001-S002_D_CFI4-1_ER PC001-S002_D_CFI4-1
4 PC001-S002_D_CFI4-1_ER PC001-S002_D_CFI4-1
5 PC001-S002_D_CFI4-1_ER PC001-S002_D_CFI4-1
或者只是删除最后一部分:
In [7]: df['domain'] = df['code'].str.replace(r'\_\w+?$','')
In [8]: df
Out[8]:
code domain
0 PC001-S002_D_CFI4-1_NN PC001-S002_D_CFI4-1
1 PC001-S002_D_CFI4-1_NN PC001-S002_D_CFI4-1
2 PC001-S002_D_CFI4-1_NN PC001-S002_D_CFI4-1
3 PC001-S002_D_CFI4-1_ER PC001-S002_D_CFI4-1
4 PC001-S002_D_CFI4-1_ER PC001-S002_D_CFI4-1
5 PC001-S002_D_CFI4-1_ER PC001-S002_D_CFI4-1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)