从 pandas 列中删除小数(字符串类型)

Lil*_*lly 3 python-3.x pandas

我想从字符串类型的 pandas 列中删除小数点

df

Net Sales
123.45
34.89
65.00
Run Code Online (Sandbox Code Playgroud)

我正在尝试从该列中删除小数

Net Sales
123
34
65
Run Code Online (Sandbox Code Playgroud)

df['Net Sales'] 已经是字符串类型。

我尝试如下:

df['Net Sales'] = df['Net Sales'].astype(str).replace('\.0', '', regex=True)

但我收到如下错误:

ValueError: invalid literal for int() with base 10: '1567.55'

谢谢。

jez*_*ael 9

如果值是字符串,首先转换为浮点数,然后转换为整数:

df['Net Sales'] = df['Net Sales'].astype(float).astype(int)
Run Code Online (Sandbox Code Playgroud)

如果值是浮点数,请使用:

df['Net Sales'] = df['Net Sales'].astype(int)
Run Code Online (Sandbox Code Playgroud)

您的解决方案应更改为\d+匹配数字后.

df['Net Sales'] = df['Net Sales'].astype(str).replace('\.\d+', '', regex=True).astype(int)
print (df)
   Net Sales
0        123
1         34
2         65
Run Code Online (Sandbox Code Playgroud)

或者您可以使用split点并通过索引选择第一个列表:

df['Net Sales'] = df['Net Sales'].astype(str).str.split('.').str[0].astype(int)
Run Code Online (Sandbox Code Playgroud)