我有这个简单的数据框:
In [101]: df = pd.DataFrame({'a':[1,2,3],'b':['ciao','hotel',"l'hotel"]})
In [102]: df
Out[102]:
a b
0 1 ciao
1 2 hotel
2 3 l'hotel
这里的目标是删除'
撇号前面的部分字符串,以便df:
a b
0 1 ciao
1 2 hotel
2 3 hotel
到目前为止,我尝试用sep=("'")
拆分字符串并仅获取第二个元素,但由于我有不同长度的字符串(因此列表),因此失败了:
df['c'] = df['b'].apply(lambda x: x.split("'")[1])
答案 0 :(得分:2)
您可以使用-1
始终获取 last 部分,而不是第二个部分。
df['c'] = df['b'].apply(lambda x: x.split("'")[-1])
print(df)
# a b c
# 0 1 ciao ciao
# 1 2 hotel hotel
# 2 3 l'hotel hotel
但是,请记住,如果你有两个或更多撇号的字符串,这将会制动(但你的要求并没有指明在这些情况下该做什么)。
答案 1 :(得分:2)
使用str.split
并按-1
选择最后一个列表:
df['c'] = df['b'].str.split("'").str[-1]
print (df)
a b c
0 1 ciao ciao
1 2 hotel hotel
2 3 l'hotel hotel
或使用str.replace
:
df['c'] = df['b'].str.replace("(.*)'", '')
print (df)
a b c
0 1 ciao ciao
1 2 hotel hotel
2 3 l'hotel hotel