我在Python 3中运行Pandas,注意到以下情况:
import pandas as pd
import numpy as np
from pandas import DataFrame
from numpy import nan
df = DataFrame([[1, nan], [nan, 4], [5, 6]])
print(df)
df2 = df
df2.fillna(0)
print(df2)
字符串
返回以下内容:
0 1
0 1 NaN
1 NaN 4
2 5 6
0 1
0 1 NaN
1 NaN 4
2 5 6
型
而以下:
import pandas as pd
import numpy as np
from pandas import Series
from numpy import nan
sr1 = Series([1,2,3,nan,5,6,7])
sr1.fillna(0)
型
返回以下内容:
0 1
1 2
2 3
3 0
4 5
5 6
6 7
dtype: float64
型
因此,当我使用.fillna()时,它用0填充Series值,而不是DataFrame值。我在DataFrame中用0代替null值时遗漏了什么?
3条答案
按热度按时间ekqde3dh1#
它与调用
fillna()
函数的方式有关。如果执行
inplace=True
(参见下面的代码),它们将被填充到位并覆盖原始 Dataframe 。字符串
r8xiu3jd2#
正如你在documentation中看到的,方法
fillna(newValue)
返回另一个DataFrame
,就像前一个一样,但是nan
的值被新的值替换了。字符串
ee7vknir3#
这样一个有趣的事件与我在一起,列仍然显示nan后fillna,最后发现,他们被读为“nan”字符串,所以我用替换为“nan”到“0”。我希望这有助于有人!