【问题标题】:How to apply fillna to last N columns of a pandas dataframe?如何将fillna应用于熊猫数据框的最后N列?
【发布时间】:2020-02-13 18:27:29
【问题描述】:

我有一个包含许多列的数据框。我想用 0 填充最后 x 列的 nan。我使用了以下代码,但它似乎不起作用。

df.iloc[:, -10:-1].fillna(value=0, inplace=True)

我做错了什么?当我专门按名称引用列时:

df['column_a'].fillna(value=0, inplace=True)

它有效,但我不想一次只做一列。

【问题讨论】:

  • 这应该可以,你能提供一个数据样本吗?
  • 这几乎是 stackoverflow.com/questions/38134012/… 的复制品,您可以在那里找到大量有用的变体。
  • 这不是重复的,因为您提到的帖子是按名称引用列。我的问题是按位置向后引用列。正如我在最初的问题中提到的,当我通过特定名称引用列时,我的代码可以工作。

标签: python pandas fillna


【解决方案1】:

应该在这里工作的食谱是

df.iloc[:, -x:] = df.iloc[:, -x:].fillna(value=0)

这里有一个可重现的例子

import pandas as pd
df = pd.DataFrame({'col1':range(10),
                   'col2':range(1, 11), 
                   'col3':range(2, 12),
                   'col4':range(3, 13),
                   'col5':range(4, 14)})

# pepper with NaNs
df.iloc[8, 2] = None
df.iloc[8, 3] = None
df.iloc[8, 4] = None

# apply fillna change to last 2 cols
x = 2
df.iloc[:, -x:] = df.iloc[:, -x:].fillna(value=0)

print(df)

【讨论】:

  • 只是出于好奇,为什么 'inplace=True' 不起作用?
  • 我会推荐您到stackoverflow.com/questions/55744015/… 和其中的链接!据我了解,该就地正在更新副本而不是原始df
猜你喜欢
  • 2017-01-04
  • 2016-11-03
  • 2018-02-28
  • 1970-01-01
  • 1970-01-01
  • 2019-02-07
  • 2013-12-29
  • 2021-02-12
  • 2018-11-13
相关资源
最近更新 更多