我想从名为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
我正在使用python3
和Pandas
模块来处理此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
我正在使用python3
和Pandas
模块来处理此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