当前位置: 首页 > 面试题库 >

pandas.fillna()未在Python 3中填充DataFrame中的值

梁丘亦
2023-03-14
问题内容

我在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()时,它填充的是Series值,而不是0的DataFrame值。这是Python
3的问题吗?否则,我在这里缺少什么来代替DataFrames中的空值以获得0?谢谢!


问题答案:

它与调用fillna()函数的方式有关。

如果这样做inplace=True(请参见下面的代码),它们将被填充到位并覆盖原始数据框。

In [1]: paste
import pandas as pd
import numpy as np
from pandas import DataFrame
from numpy import nan

df = DataFrame([[1, nan], [nan, 4], [5, 6]])
## -- End pasted text --

In [2]:

In [2]: df
Out[2]: 
    0   1
0   1 NaN
1 NaN   4
2   5   6

In [3]: df.fillna(0)
Out[3]: 
   0  1
0  1  0
1  0  4
2  5  6

In [4]: df2 = df

In [5]: df2.fillna(0)
Out[5]: 
   0  1
0  1  0
1  0  4
2  5  6

In [6]: df2  # note how this is unchanged.
Out[6]: 
    0   1
0   1 NaN
1 NaN   4
2   5   6

In [7]: df.fillna(0, inplace=True)  # this will replace the values.

In [8]: df
Out[8]: 
   0  1
0  1  0
1  0  4
2  5  6

In [9]:


 类似资料:
  • 我有一个熊猫数据框,它有超过4列。col1中的某些值缺失,我希望根据以下方法设置这些缺失的值: 尝试根据具有相同col2, col3, col4值的记录的col1值的平均值来设置它 如果没有这样的记录,则根据具有相同col2, col3值的记录的col1值的平均值来设置它 如果仍然没有这样的记录,则根据具有相同col2值的记录的col1值的平均值来设置它 如果以上都找不到,将其设置为col1中所有

  • 我有以下示例数据框架: 我只想替换前两列中的空值——列“a”和“b”: 这是创建示例数据帧的代码: 我知道如何使用替换所有空值: 当我尝试这样做时,我失去了第三列:

  • 我有2个xml配置文件,如下所示 app-context.xml: test-cache.xml

  • 我用TabLayout设置了ViewPager2,以便通过滑动或单击选项卡来切换片段。我所知道的问题是,我的碎片并没有占据所有的空间,我在底部有一个无法滑动的空白空间。我怎样才能把我的碎片填满那个空间? 编辑:我认为我的问题与我试图在另一个片段中加载我的视图寻呼机这一事实有关。我将我的代码复制到一个新项目中,而不是将我的代码加载到一个片段中,而是将它加载到主活动中,并且它已经工作了。在片段中加载视

  • 我有一个非常简单的Java/Spring应用程序来演示KStream的功能,但不幸的是,我无法使KStream加载数据。想法是创建一个KStream对象,并使用controller GET方法简单地检索其内容。示例代码: 问题-主题中有消息,但foreach(...)中的KStream枚举没有从中检索任何结果。KStream对象状态为“RUNning”,日志中没有错误。 生成随机应用程序ID并将A

  • 我的dataframe由多个具有NaN值的列组成。我只想将特定列(列名:MarkDown1)的NaN值替换为0。

  • 问题内容: 我的Java swing应用程序有一个格式问题。它应该很简单,但是我很难找到任何帮助(每个主题似乎都与 删除 JPanel中的默认填充有关)。我的各个JPanels中的文本都拥抱侧面和顶部,触及彩色边框:如何添加填充?谢谢。 问题答案: 在周围设置一个。 例:

  • 问题内容: 抱歉,如果已经提出此问题,我已经进行了深入搜索,什么也没有。 现在,我知道: 会将我的价格填充到左侧的零,因此价格为25将得出 00025 如果我想将它们向右填充,结果是 25000 怎么办?我该如何 仅 使用 String.format 模式呢? 问题答案: 您可以使用: 我可以只使用格式模式吗? 就像方法一样使用。从这篇文章中,您将看到输出空间是硬编码的,因此必须使用。