尝试将我的列格式化为INT,因为1.0 2.0 3.0导致了我如何使用数据的问题。我尝试的第一件事是df['Severity'] = pd.to_numeric(df['Severity'], errors='coerce')
。虽然看起来它最初起作用,但当我写入csv时,它又恢复为浮动状态。接下来,我尝试使用df['Severity'] = df['Severity'].astype(int)
,然后使用df['Severity'] = df['Severity'].astype(int, errors='coerce')
进行另一次尝试失败,因为这对我来说似乎是一个合理的解决方案。
我做了一些挖掘大熊猫的事情。 docs并发现了关于pandas如何处理NAs的信息:
Typeclass Promotion dtype for storing NAs
floating no change
object no change
integer cast to float64
boolean cast to object
我觉得奇怪的是,当我运行df.info()时,我得到Severity 452646 non-null object
示例数据:
Age,Severity
1,1
2,2
3,3
4,NaN
5,4
6,4
7,5
8,7
9,6
10,5
非常感谢任何帮助:)
答案 0 :(得分:1)
由您自己决定如何处理缺失值没有正确的方法,因为它取决于您。您可以使用 function valdateMe() {
$.getScript("validate.js", function(){
});
}
删除它们,也可以使用dropna
替换/填充它们,请注意,无法使用整数表示replace/fillna
:https://en.wikipedia.org/wiki/NaN#Integer_NaN。
NaN
为object
的原因是因为你现在混合了整数和浮点数。根据操作的不同,整个系列可能会升级到dtype
,但在你的情况下,你有混合的dtypes。
答案 1 :(得分:0)
从熊猫0.24(2019年1月)开始,可以通过使用nullable integer data type,使用arrays.IntegerArray
表示数据来做您想做的事情:
In [83]: df.Severity
Out[83]:
0 1.0
1 2.0
2 3.0
3 NaN
4 4.0
5 4.0
6 5.0
7 7.0
8 6.0
9 5.0
Name: Severity, dtype: float64
In [84]: df.Severity.astype('Int64')
Out[84]:
0 1
1 2
2 3
3 NaN
4 4
5 4
6 5
7 7
8 6
9 5
Name: Severity, dtype: Int64