当前位置: 首页 > 知识库问答 >
问题:

删除小数点子熊猫列(字符串类型)

仉昂熙
2023-03-14

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

Df

Net Sales
123.45
34.89
65.00

我正试着去掉那一栏的小数

Net Sales
123
34
65

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

我尝试如下:

< code>df['净销售额'] = df['净销售额']。astype(str)。替换(' \.0 ','',regex=True)

但我得到的错误如下:

< code>ValueError:基数为10的int()的文本无效:“1567.55”

谢谢。

共有2个答案

吴缪文
2023-03-14

您可以将数据类型强制转换为int,只是在您的数据中有nan的情况下需要注意,转换为int不起作用,因为它们有float数据类型,所以regex解决方案可能更好。

df['Net Sales'] = df['Net Sales'].astype('int') 

或者在正则表达式的情况下:

df['Net Sales'] = df['Net Sales'].astype('str').replace(r'\.\d+$', '', regex=True).astype('int')

例:

import pandas as pd

df = pd.DataFrame({"Net Sales" : [1.5, 2.5]})

df['Net Sales'] = df['Net Sales'].astype('int')

df['Net Sales'] = df['Net Sales'].astype('str').replace(r'\.\d+$', '', regex=True).astype('int')

输出:

#   Net Sales
#0  1
#1  2
况繁
2023-03-14

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

df['Net Sales'] = df['Net Sales'].astype(float).astype(int)

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

df['Net Sales'] = df['Net Sales'].astype(int)

您的解决方案应使用 \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

或者您可以使用<code>按点拆分

df['Net Sales'] = df['Net Sales'].astype(str).str.split('.').str[0].astype(int)
 类似资料:
  • 问题内容: 我对此有一个类似的问题:Pandas DataFrame:从一列中的字符串中删除不需要的部分 。 所以我用了: 大多数项目以“ PPI /”开头,但并非全部。似乎当没有’PPI /’后缀的项目遇到此错误时: AttributeError:“ float”对象没有属性“ lstrip” 我在这里想念什么吗? 问题答案: 使用replace: 或string.replace:

  • 问题内容: 我已经尝试解决这个问题一段时间了,我试图从DB_user列中删除非ASCII字符并尝试将它们替换为空格。但是我不断出错。这是我的数据框的外观: 我正在使用此功能,这是我在研究SO问题时遇到的。 我不断收到错误: 但是,我认为通过使用filter_func函数中的循环,可以通过在’ord’中输入一个char来解决这个问题。因此,当它遇到非ASCII字符时,应将其替换为空格。 有人可以帮我

  • 我有一个熊猫数据帧,其中有一列文件列表 我想从中的每个条目中删除文件扩展名。如何完成此操作? 我尝试了: 但是当我用<code>df查看列条目时。head(),没有任何变化。 如何做到这一点?

  • 问题内容: 我想替换列中的子字符串 到。 需求输出 我尝试,但它返回。 问题答案: 使用与更换和:

  • 问题内容: 我有一个清单 我正在尝试删除其超字符串已经在列表中的字符串。在这种情况下,结果应为: 我已经写了代码: 但它似乎不起作用。我读过,我们无法在列表上进行迭代时将其删除。因此,副本,而这是我的原始列表。 问题答案: l=[‘abc’,’abcdef’,’def’,’defdef’,’polopolo’] print [j for i, j in enumerate(l) if all(j

  • 我有一个相当大的数据帧(11k行和20列)。其中一列的数据类型是混合的,主要是数字(float),其中有少量字符串分散在各处。 在使用混合列中的数据执行一些统计分析之前,我通过查询其他列来对该数据帧进行子集划分(但如果存在字符串,则无法执行此操作)。99%的时间,一旦子集这个列是纯数字的,但很少字符串值会在子集中结束,我需要捕获它。 通过Pandas混合类型列循环检查字符串(或者反过来检查整个列是