3

我的 DataFrame 中有一个系列(month_addded),如下所示:

9.0
12.0
12.0
nan
1.0

我希望所有的浮点数都是整数,而 NaN 保持原样。我这样做了:

for i in df['month_added']:
    if i > 0:
        i=int(i)

但它什么也没做。

4

1 回答 1

3

NaN是浮点型的,所以只要你有NaN. 您可以使用可从 Pandas 0.24.0 获得的Nullable Integer

df['month_added'] = df['month_added'].astype('Int64')

如果这不可能,您可以强制Object输入(不推荐):

df['month_added'] = pd.Series([int(x) if x > 0 else x for x in df.month_added], dtype='O')

或者由于您的数据是积极的,并且您可以使用以下NaN内容进行屏蔽:NaN0

df['month_added'] = df['month_added'].fillna(0).astype(int)
于 2020-11-13T15:20:34.393 回答