使用Python Pandas从列(csv文件)中删除逗号



我想从名为size的列中删除逗号。CSV如下所示:

number   name    size
1      Car     9,32,123
2      Bike    1,00,000
3      Truck   10,32,111

我希望输出如下:

number   name    size
1      Car     932123
2      Bike    100000
3      Truck   1032111

我正在使用python3Pandas模块来处理此csv。我正在尝试replace方法,但没有得到所需的输出。

我的代码快照:

import pandas as pd
df = pd.read_csv("file.csv")
// df.replace(",","")
// df['size'] = df['size'].replace(to_replace = "," , value = "")
// df['size'] = df['size'].replace(",", "")
df['size'] = df['size'].replace({",", ""})
print(df['size'])  // expecting to see 'size' column without comma

我没有看到任何错误/异常。最后一行print(df['size'])只是按原样显示值,即使用逗号。

对于replace,我们需要regex=True,因为否则它会在一个单元格中寻找完全匹配,即其中只有,的单元格:

>>> df["size"] = df["size"].replace(",", "", regex=True)
>>> df
number   name     size
0       1    Car   932123
1       2   Bike   100000
2       3  Truck  1032111

我正在使用python3Pandas模块来处理此csv

请注意,pandas.read_csv函数有可选参数thousands,如果,用于表示数千,则可以设置thousands=",",请考虑以下示例

import io
import pandas as pd
some_csv = io.StringIO('valuen"1"n"1,000"n"1,000,000"n')
df = pd.read_csv(some_csv, thousands=",")
print(df)

输出

value
0        1
1     1000
2  1000000

为了简洁起见,我使用了io.StringIO,提供内容与io.StringIO中第一个参数相同的文件名可能会达到相同的效果。

改用str.replace

df['size'] = df['size'].str.replace(',', '')

可选使用astype:转换为int

df['size'] = df['size'].str.replace(',', '').astype(int)
number   name     size
0       1    Car   932123
1       2   Bike   100000
2       3  Truck  1032111

使用的样本帧:

df = pd.DataFrame({'number': [1, 2, 3], 'name': ['Car', 'Bike', 'Truck'],
'size': ['9,32,123', '1,00,000', '10,32,111']})
number   name       size
0       1    Car   9,32,123
1       2   Bike   1,00,000
2       3  Truck  10,32,111

最新更新