在另一列 python 的字符串开头的列的括号中插入字符串



我有一个看起来像下面的数据帧:

Name    Country         (Title)
0  Elizabeth    England      (Queen of)
1    Jackson        Pop       (King of)
2      Trump        USA  (President of)
3     Macron     France  (President of)
4    Clinton        USA            None
5      Blair    England            None
6      Elvis  RocknRoll       (King of)

我想得到的是以下内容:

Name             Country                (Title)
0  Elizabeth       Queen of England      (Queen of)
1    Jackson       King of Pop           (King of)
2      Trump       President of USA      (President of)
3     Macron       President of France   (President of)
4    Clinton       USA                   None
5      Blair       England               None
6      Elvis       King of RocknRoll     (King of)

我已经进行了几次尝试(包括使用正则表达式(。我已经尝试了下面的代码,它很清楚,但也无法正常工作。

任何建议将不受欢迎!

谢谢。

def extract(w):
begin = w.find('(')
if begin == -1:
return ''
begin += 1 
end = w.find(')', begin)
if end == -1: 
return w[begin:]
else:
return w[begin:end]
for i in range(len(table)):
if table['(Title)'][i] != None :
table['Country'][i] = extract(table['Title'[i]).str.cat(table['Country'].values.astype(str), sep='')
Name             Country                (Title)
0  Elizabeth       Queen of England      (Queen of)
1    Jackson       King of Pop           (King of)
2      Trump       President of USA      (President of)
3     Macron       President of France   (President of)
4    Clinton       USA                   None
5      Blair       England               None
6      Elvis       King of RocknRoll     (King of)

你可以使用这个:

df['new_country'] = df['(title)'].str[1:-1] + ' ' + df['country']
df.loc[pd.notna(df['(title)']), 'country'] = df['new_country']

解决方案:-

for idx, row in df.iterrows():
concat_string = row.Title.lstrip('(').rstrip(')')+' '+ row.Country if row.Title else row.Country
df.at[idx, 'Country'] = concat_string

最新更新