简体   繁体   English

将 dataframe object 转换为 int64 时出错

[英]Error when converting dataframe object into int64

Good day.再会。 I am working on 2 dataframes that i will later be comparing, playersData & allStar .我正在研究 2 个数据框,稍后我将进行比较, playersDataallStar playersData['Year'] is type int64, while allStar is type object. playerData['Year']是 int64 类型,而 allStar 是 object 类型。 i tried to convert the playersData['Year'] using the following code:我尝试使用以下代码转换playerData['Year']

playersData['Year'] = playersData['Year'].astype(str).astype(int)

but it shows error saying:但它显示错误说:

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

the code I used is from the link: https://www.kite.com/python/answers/how-to-convert-a-pandas-dataframe-column-from-object-to-int-in-python我使用的代码来自链接: https://www.kite.com/python/answers/how-to-convert-a-pandas-dataframe-column-from-object-to-int-in-python

here is reference pics regarding types of my dataframes:这是有关我的数据框类型的参考图片:

2个数据帧的dtypes

Try Dropping all the nan values from the dataset.尝试从数据集中删除所有 nan 值。

playersData.dropna(inplace=True)

You can either drop rows containing NaN values or replace them with a constant (In case there were few other columns containing valuable info, dropping rows might not be a good option).您可以删除包含 NaN 值的行或将它们替换为常量(如果其他列包含有价值的信息很少,删除行可能不是一个好的选择)。

  1. If you want to drop playersData.dropna(inplace=True) or playersData = playersData.dropna()如果你想删除playersData.dropna(inplace=True)playersData = playersData.dropna()

  2. Replacing with a constant (Ex: 0) playersData['Year'].fillna(0, inplace=True) or playersData['Year'] = playersData['Year'].fillna(0)替换为常量(例如:0) playersData['Year'].fillna(0, inplace=True)playersData['Year'] = playersData['Year'].fillna(0)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM