我有如下所示的数据框。我需要将数据框中的列与字符串进行比较并创建一个新列。
数据框:
col_1
AB_SUMI
AK_SUMI
SB_LIMA
SB_SUMI
XY_SUMI
如果 col_1 中存在“AB”、“AK”、“SB”,则应使用它们各自的值创建一个新列,否则“*”应出现在列值中。
预期输出:
col_1 new_col
AB_SUMI AB
AK_SUMI AK
SB_LIMA SB
SB_SUMI SB
XY_SUMI *
我尝试过以下代码,但没有成功。
list=['AB','AK','AB']
for item in list:
if df['col1'].str.contains(item).any():
df['new']=item
请在这方面帮助我。提前致谢
最佳答案
您可以使用extract
通过 join
|
(或
)使用 list
创建的 regex
,最后替换 NaN
作者:fillna
:
L= ['AB','AK','SB']
a = '(' + '|'.join(L) + ')'
print (a)
(AB|AK|SB)
df['new'] = df.col_1.str.extract(a, expand=False).fillna('*')
print (df)
col_1 new
0 AB_SUMI AB
1 AK_SUMI AK
2 SB_LIMA SB
3 SB_SUMI SB
4 XY_SUMI *
关于python - 比较列中的字符串并在 python 中创建相应的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42883267/