我有一个熊猫列(例如):
1 France
2 France
3 Germany
4 Germany
5 Germany
6 Spain
7 Spain
8 Spain
175 France.2
176 France.2
177 Germany.2
178 Germany.2
179 Germany.2
180 UK.1
181 UK.1
182 UK.1
183 Italy.2
184 Italy.2
185 Italy.2
这就是我的索引和df [0]。
我正在尝试将“ .1”和“ .2”定位到“ .4”。并删除它们。
rename_rows = ['.1', '.2', '.3', '.4']
for row in df[0]:
for r in rename_rows:
if r in row:
df[0] = df[0].replace(r, '')
发生这种情况时什么也没有发生。
如果进入最后一个循环“ if r in row:”,我说print('True')它将正确完成。我还尝试将df[0] = df[0].replace(r, '')
替换为df[0] = df[0].replace(row, '')
,它成功删除了输入国家/地区名称。但是,我只想删除“ .1”部分。
有什么想法为什么不只删除那部分?
答案 0 :(得分:2)
您可以使用str.extract
:
df[0].str.extract('^([^\.]+)')
输出:
0
1 France
2 France
3 Germany
4 Germany
5 Germany
6 Spain
7 Spain
8 Spain
175 France
176 France
177 Germany
178 Germany
179 Germany
180 UK
181 UK
182 UK
183 Italy
184 Italy
185 Italy
答案 1 :(得分:1)
使用.str.replace()用空字符串替换不需要的结尾:
import math, random
class Point():
def __init__(self,x,y,z):
self.coordinates = (x,y,z)
def distance(self,point):
return math.sqrt((point.coordinates[0] - self.coordinates[0])**2 + (point.coordinates[1] - self.coordinates[1])**2 + (point.coordinates[1] - self.coordinates[1])**2)
r = lambda: random.uniform(0,100)
a = Point(r(),r(),r())
b = Point(r(),r(),r())
print(a.distance(b))
正则表达式的解释:
$代表字符串的结尾,因此当字符串以。结尾时。后跟数字0到4,应将其替换为空字符串。