Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 重命名其他列中的值后,DataFrame浮点列将转换为object_Python_Python 3.x_Pandas - Fatal编程技术网

Python 重命名其他列中的值后,DataFrame浮点列将转换为object

Python 重命名其他列中的值后,DataFrame浮点列将转换为object,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一个数据框,我正在做一些清理,出于某种原因,我根本没有接触的列从类型float切换到object。该列没有Nan值,只有数字,根本没有被弄乱 data = pd.read_csv(path, encoding="ISO-8859-1", names=['c_id', 'c_name', 'org_name', 'product', 'amount', 'date', 'product_type', 'payment_type']) mask = data['c_name'] == data

我有一个数据框,我正在做一些清理,出于某种原因,我根本没有接触的列从类型float切换到object。该列没有Nan值,只有数字,根本没有被弄乱

data = pd.read_csv(path, encoding="ISO-8859-1", names=['c_id', 'c_name', 'org_name', 'product', 'amount', 'date', 'product_type', 'payment_type'])

mask = data['c_name'] == data['org_name']
data['c_type'] = np.where(mask, 'Org', 'Ind')
data.loc[data['product_type'] == 'product'] = 'Product'
如果在最后一行之前打印列类型,金额列是一个浮动,但如果在最后一行之后执行相同操作,则金额列类型将更改为对象

最后一行只是为了纠正标签问题,为什么它会影响其他列的类型


我知道我可以手动更改列的类型,但我只是想了解为什么会发生这种情况。

您正在使用
loc
语句将整行更改为字符串
product
,因此事实上,
amount
确实会被修改。相反,只需更改列
'product\u type'
中的值即可:

data.loc[data['product_type'] == 'product', 'product_type'] = 'Product'
您的
金额
列将保持不变

另一种方法是使用
替换

data.replace({'product_type':{'product':'Product'}}, inplace=True)
# or:
data['product_type'] = data['product_type'].replace('product', 'Product')