我有一个包含州和国家/地区名称的列:
Name Region Value_1 etc.
Apple Penn State 5641561
Apple Boston State 21515151
Apple United States 5545645
etc.
我想在空格(“”)后面加上字符串,但我想保持美国原样。
例如:
Name Region Value_1 etc.
Apple Penn 5641561
Apple Boston 21515151
Apple United States 5545645
etc.
我该怎么做?
我正在使用以下代码进行拆分:
df['Region'] = df['Region'].str.split(' ').str[0]
答案 0 :(得分:1)
IIUC,您可以使用Series.str.replace
用替换字符串替换系列中模式的出现:
df['Region'] = df['Region'].str.replace(r'(\sState)\b', '')
结果:
# print(df)
Name Region Value_1
0 Apple Penn 5641561
1 Apple Boston 21515151
2 Apple United States 5545645
答案 1 :(得分:0)
尝试一下:
df = pd.DataFrame({'Name': ['Apple', 'Apple', 'Apple'], 'Region': ['Penn State', 'Boston State', 'United States']})
df['Region'] = df['Region'].apply(lambda x: x.replace('State', '') if x.split()[-1].strip() == 'State' else x)
输出:
Name Region
0 Apple Penn
1 Apple Boston
2 Apple United States
答案 2 :(得分:0)
使用np.where()
的替代方法:
### Create DataFrame
df = pd.DataFrame({
'Name': ['Apple', 'Apple', 'Apple'],
'Region': ['Penn State', 'Boston State', 'United States'],
'Value_1': [5641561, 21515151, 554564]
})
### Using np.where()
df['Region'] = df['Region'].where(df['Region'].str.contains('United States'),
df['Region'].str.split(" ").str[0])
### Output
print(df)
Name Region Value_1
0 Apple Penn 5641561
1 Apple Boston 21515151
2 Apple United States 554564