欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

python字符串小数转化整数_python – Pandas将字符串列和NaN(浮点数)转换为整数,保持NaN...

发布时间:2025/4/16 49 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python字符串小数转化整数_python – Pandas将字符串列和NaN(浮点数)转换为整数,保持NaN... 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

参见英文答案 > Convert Pandas column containing NaNs to dtype `int`                                    11个

我在转换包含字符串格式(类型:str)和NaN(类型:float64)的2位数字的列时遇到问题.我想以这种方式获得一个新列:NaN,其中有NaN和整数,其中有两个数字的字符串格式.

举个例子:我想从列YearBirth1获取列Yearbirth2,如下所示:

YearBirth1 #numbers here are formatted as strings: type(YearBirth1[0])=str

34 # and NaN are floats: type(YearBirth1[2])=float64.

76

Nan

09

Nan

91

YearBirth2 #numbers here are formatted as integers: type(YearBirth2[0])=int

34 #NaN can remain floats as they were.

76

Nan

9

Nan

91

我试过这个:

csv['YearBirth2'] = (csv['YearBirth1']).astype(int)

正如我所料,我得到了这个错误:

ValueError: cannot convert float NaN to integer

所以我尝试了这个:

csv['YearBirth2'] = (csv['YearBirth1']!=NaN).astype(int)

并得到这个错误:

NameError: name 'NaN' is not defined

最后我试过这个:

csv['YearBirth2'] = (csv['YearBirth1']!='NaN').astype(int)

没有错误,但当我检查列YearBirth2时,这是结果:

YearBirth2:

1

1

1

1

1

1

非常糟糕..我认为这个想法是对的,但是有一个问题让Python能够理解我对NaN的意思..或者我尝试的方法可能是错的..

我也使用了pd.to_numeric()方法,但这种方式我获得了浮点数,而不是整数.

有什么帮助?!

谢谢大家!

P.S:csv是我的DataFrame的名称;

对不起,如果我不太清楚,我正在改进英语!

解决方法:

您可以使用to_numeric,但不可能使用NaN值获取int – 它们始终转换为float:see na type promotions.

df['YearBirth2'] = pd.to_numeric(df.YearBirth1, errors='coerce')

print (df)

YearBirth1 YearBirth2

0 34 34.0

1 76 76.0

2 Nan NaN

3 09 9.0

4 Nan NaN

5 91 91.0

标签:python,pandas,nan,type-conversion

来源: https://codeday.me/bug/20190828/1755321.html

总结

以上是生活随笔为你收集整理的python字符串小数转化整数_python – Pandas将字符串列和NaN(浮点数)转换为整数,保持NaN...的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。