我有一个熊猫数据框,其中的“国家”列具有以下值:“瑞士17”,“玻利维亚(多民族国)”。我想将它们转换为“瑞士”,“玻利维亚”。我该怎么办?
PS:我可以使用for循环解决问题,但是这很长一段时间,因为这里有一个数据框。我们可以使用任何熊猫数据框函数来解决此问题吗?
答案 0 :(得分:2)
如果数字和括号是唯一表示要舍弃的内容的开头,则可以基于'('分割字符串,只保留第一部分,然后再次基于数字分割字符串,并保留第一部分,其余部分丢弃。
a = 'Bolivia (Plurinational State of)'
a.split("(")[0]
会给你玻利维亚。
b = 'Switzerland17'
re.compile('[0-9]').split(b)[0]
会给您瑞士,并在出现任何数字后丢弃任何东西。
答案 1 :(得分:1)
def mysplit(a):
b = a.split("(")[0]
return re.compile('[0-9]').split(b)[0].rstrip()
df['Country'].apply(mysplit)
这将起作用。
答案 2 :(得分:0)
因此,您拥有如下数据:
string = 'Switzerland17'
我们可以使用re
模块sub
函数来替换数字结尾。
import re
no_digits = re.sub(r'\d+$', '', string)
我们得到:
>>> no_digits
'Switzerland'
答案 3 :(得分:0)
假设我们有一个示例数据框df
为
Country
0 Switzerland24
1 USA53
2 Norway3
您可以使用filter()
功能,
df['Country'] = df['Country'].apply(lambda s : ''.join(filter(lambda x: x.isalpha(), s)))
print(df)
Country
0 Switzerland
1 USA
2 Norway
或
def remove_digits(s):
for x in range(10):
s = s.replace(str(x), '')
return s
df['Country'] = df['Country'].apply(remove_digits)
print(df)
Country
0 Switzerland
1 USA
2 Norway