Python 重命名其他列中的值后,DataFrame浮点列将转换为object
我有一个数据框,我正在做一些清理,出于某种原因,我根本没有接触的列从类型float切换到object。该列没有Nan值,只有数字,根本没有被弄乱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
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')