我有一个脚本,我一直在使用没有问题,它所做的就是创建一个新的列,值增加10%,直到我击中一列.唯一的事情是它的所有数字,没有空格或空/NaN或字母,它做我的头。
df['COST_AUS'] = df['DBP_AUS'].multiply(1.1).round()
个字符老实说,我不知道这些日志是什么意思:(
x3naxklr1#
我尝试复制您得到的相同错误,并得出结论DBP_AUS可能包含非数字数据或缺失值(NaN),这会在执行算术运算时导致问题。要诊断此问题,您可以使用以下命令验证“DBP_AUS”列中的数据类型和NaN值是否存在:
print(df['DBP_AUS'].dtype)
字符串如果上述代码的输出是object或
print(df['DBP_AUS'].isnull().sum())
型上面代码的输出是1,这意味着数据库中有一个非数字数据,你正在对其进行数学运算。因此,在应用上述代码段后,您的代码将看起来像这样:
print(df['DBP_AUS'].dtype) # output of this line will be "object" df['COST_AUS'] = df['DBP_AUS'].multiply(1.1).round()
型
lmvvr0a82#
删除千位分隔符后,尝试将列转换为数字:
df['COST_AUS'] = df['DBP_AUS'].str.replace(r',', '').astype(float).mul(1.1).round() print(df) # Output DBP_AUS COST_AUS 0 1,159.00 1275.0
字符串
qlzsbp2j3#
非常感谢社区,在一些指导下,我们通过使用以下命令成功地将问题识别为数字格式;首先要验证列中没有null/NaN或除数字以外的任何内容,
print(df['DBP_AUS'].dtype) print(df['DBP_AUS'].isnull().sum())
字符串产出是:
Object 0
型通过转换字符串添加“.astype(float)":
df['COST_AUS'] = df['DBP_AUS'].astype(float).multiply(1.1)
型发现了一个新的错误
ValueError: could not convert string to float: '1,153.00'
型由于它显示了'1,153.00',因此对该列进行了格式化,并通过将千位数添加到pd.read.csv中进行了更正
df = pd.read_csv('source', thousands=',')
z3yyvxxp4#
我用最少和可重复的例子来解决问题
import pandas as pd s = pd.Series([1, 2, '3,000.1'])
字符串S
0 1 1 2 2 3,000.1 dtype: object
型运行以下代码:
s.multiply(1.1).round()
型返回错误
TypeError: can't multiply sequence by non-int of type 'float'
型因为“3,000.1”不是浮点数。运行跟随代码
out = s.astype('str').str.replace(',', '').astype('float').multiply(1.1).round()
型出来
0 1.0 1 2.0 2 3300.0 dtype: float64
型请检查你的例子的类型,并提供minimal and reproducible example之前,问
4条答案
按热度按时间x3naxklr1#
我尝试复制您得到的相同错误,并得出结论DBP_AUS可能包含非数字数据或缺失值(NaN),这会在执行算术运算时导致问题。
要诊断此问题,您可以使用以下命令验证“DBP_AUS”列中的数据类型和NaN值是否存在:
字符串
如果上述代码的输出是object或
型
上面代码的输出是1,这意味着数据库中有一个非数字数据,你正在对其进行数学运算。
因此,在应用上述代码段后,您的代码将看起来像这样:
型
lmvvr0a82#
删除千位分隔符后,尝试将列转换为数字:
字符串
qlzsbp2j3#
非常感谢社区,在一些指导下,我们通过使用以下命令成功地将问题识别为数字格式;
首先要验证列中没有null/NaN或除数字以外的任何内容,
字符串
产出是:
型
通过转换字符串添加“.astype(float)":
型
发现了一个新的错误
型
由于它显示了'1,153.00',因此对该列进行了格式化,并通过将千位数添加到pd.read.csv中进行了更正
型
z3yyvxxp4#
我用最少和可重复的例子来解决问题
字符串
S
型
运行以下代码:
型
返回错误
型
因为“3,000.1”不是浮点数。
运行跟随代码
型
出来
型
请检查你的例子的类型,并提供minimal and reproducible example之前,问