我有一个pandas数据帧如下:
In [55]: df.head()
Out[55]:
Country Energy Supply Energy Supply per Capita % Renewable
0 Afghanistan 3.210000e+08 10.0 78.669280
1 Albania 1.020000e+08 35.0 100.000000
2 Algeria1 1.959000e+09 51.0 0.551010
3 American Samoa NaN NaN 0.641026
4 Andorra 9.000000e+06 121.0 88.695650
并假设我要删除df['Country']
中每个条目的每个数字字符
我写了以下代码:
In [15]: for c in energy['Country']:
....: c = ''.join([i for i in c if not i.isdigit()])
....:
当我打电话给df.head()
时,输出相同,即根本没有变化。据我所知,这种方法只是为变量c赋值,但是没有对数据帧进行更改(我是否正确?)
所以我尝试了新代码:
In [51]: k = 0
In [52]: for c in df['Country']:
....: df.loc[k, "Country"] = ''.join([i for i in c if not i.isdigit()])
....: k += 1
....:
并且它有效。 我当然知道这是一个非常慢的方法(第二个),有没有更快的方法可用?
答案 0 :(得分:1)
您可以使用Pandas内置字符串操作str.replace()
df['Country'] = df['Country'].str.replace('\d','')
答案 1 :(得分:0)
使用map功能。使用Python模块re
可以轻松完成此任务。
import re
df['Country'] = df['Country'].map(lambda x: re.sub('\d', '', x))