替换熊猫列中的字符串

时间:2020-11-05 21:37:29

标签: python pandas

我有一个熊猫列(例如):

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”部分。

有什么想法为什么不只删除那部分?

2 个答案:

答案 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,应将其替换为空字符串。