print(dataset_df['DeckNum'].dtype)
# change DeckNum Data Type,because it should be num
dataset_df['DeckNum'] = dataset_df['DeckNum'].astype(int)
print(dataset_df['DeckNum'].dtype)
print(dataset_df['DeckNum'].sum(skipna=True))
上述代码中,DeckNum列是object类型,这一列的数据有str数据以及NaN,在转int时候报错:
cannot convert float NaN to integer
原因是因为:
NaN是float类型的,你转int会报错(官方解释Nullable integer data type — pandas 2.1.1 documentation),要转Int64或Int32,反正根据你的数据范围显示给出数据类型
stackoverflow上解决方案:
1.方案1:
dataset_df['DeckNum'] = dataset_df['DeckNum'].astype("Int32")
2.方案2:不是那么完美的解决方案,先替换空值,再替换回来:
df[col] = df[col].fillna(-1)
df[col] = df[col].astype(int)
df[col] = df[col].astype(str)
df[col] = df[col].replace('-1', np.nan)