我有一个看起来像下面的数据帧:
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