【问题标题】:Is there a way to get the mean value of previous two columns in pandas?有没有办法获得熊猫前两列的平均值?
【发布时间】:2019-09-22 23:52:18
【问题描述】:

我想计算前两行的平均值并在我的数据框中填充 NAN。 2010-19 列中只有几行有缺失值。

我尝试使用bfill 和ffill,但它只捕获上一个或下一个行/列值并填充 NAN。

我的示例数据集有 7 列,如下所示:

X       1990-2000   2000-2010   2010-19   1990-2000  2000-2010   2010-19
Hyderabad    10          20       NAN         1         3           NAN

我想要的输出:

X          1990-2000   2000-2010   2010-19   1990-2000  2000-2010   2010-19
Hyderabad    10          20          15         1           3         2

【问题讨论】:

  • 能否请您说明您要如何填写NaN 值?
  • 我修正了你的格式。
  • 在您告诉我们您想用什么填充 NaN 之前,无法回答这个问题......什么值?零?最后一个非 NaN 值(前向填充?)下一个非 NaN 值(后向填充)?列是什么意思?还有什么?在您的示例中,15 和 2 来自哪里?

标签: python python-3.x pandas dataframe nan


【解决方案1】:

要以这种方式逐行使用fillna,一个简单的解决方案是提供一个熊猫系列作为fillna 的参数。这将根据索引替换 NaN 值。

由于列名重复,以下代码使用列索引。假设有一个名为 df 的数据框:

col_indices = [3, 6]

for i in col_indices:
    means = df.iloc[:, [i-1, i-2]].mean(axis=1)
    df.iloc[:, i].fillna(means, inplace=True)

这将用col_indices 中每列左侧两列的平均值填充NaN 值。

【讨论】:

    猜你喜欢
    • 2015-09-11
    • 2023-02-17
    • 2017-08-28
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多