【问题标题】:How to ignore Nan and perform calculation on Dataframe? [duplicate]如何忽略 Nan 并对 Dataframe 进行计算? [复制]
【发布时间】:2021-05-10 12:02:08
【问题描述】:

下面是我的数据框:

           DP1       DP2       DP3  DP4  DP5
OP1        NaN  0.786232  0.092335  NaN  NaN
OP2  18.782195  0.554774  0.244653  NaN  NaN
OP3  58.570527  0.743150       NaN  NaN  NaN
OP4  87.540171       NaN       NaN  NaN  NaN
OP5        NaN       NaN       NaN  NaN  NaN 

使用上面的数据框,我正在使用下面的 cade 计算偏移量的总和:

sumOff = cumdf.apply(lambda x: x.iloc[:cumdf.index.get_loc(x.last_valid_index())].sum())

但由于 Nan 值,它显示错误。 我该如何解决这个问题。

【问题讨论】:

  • 预期输出是什么?
  • df = df.fillna(0)
  • 这能回答你的问题吗? Ignoring NaN in a dataframe
  • 如何忽略 Nan 值?我不想填。每当计算发生时,南都必须忽略

标签: python pandas dataframe numpy


【解决方案1】:

我认为您只需要删除带有DataFrame.dropna 的缺失值列:

f = lambda x: x.iloc[:cumdf.index.get_loc(x.last_valid_index())].sum()
sumOff = cumdf.dropna(how='all', axis=1).apply(f)
print (sumOff)
DP1    77.352722
DP2     1.341006
DP3     0.092335
dtype: float64

如果需要最终Series中的所有列添加Series.reindex

sumOff = sumOff.reindex(cumdf.columns)
print (sumOff)
DP1    77.352722
DP2     1.341006
DP3     0.092335
DP4          NaN
DP5          NaN
dtype: float64

【讨论】:

  • 它的工作。坦克你。
  • c = ResampledDF.iloc[1][::-1].cumprod()[::-1] ResampledDF = ResampledDF.append(pd.Series(c,name='CDF') ) 这是我计算 CDF 的代码,但它返回 Nan 和 -inf 值。你能检查一下吗?
  • @Devil - 预期输出应该如何?
猜你喜欢
  • 2022-01-07
  • 2019-05-15
  • 1970-01-01
  • 2019-04-18
  • 2016-04-04
  • 1970-01-01
  • 2014-09-03
  • 1970-01-01
相关资源
最近更新 更多