【问题标题】:How to drop a single value in a row?如何连续删除单个值?
【发布时间】:2020-03-06 09:17:58
【问题描述】:

我正在执行平衡面板回归。由于几个变量有缺失值,我需要将它们平均删除以保持平衡。但是,当我删除 NA 时,会删除整行,而它可能包含其他变量的有价值信息。当我使用无效的 NA 或 Inf 值进行计算时,它会将它们视为零或 inf。如何删除 NA 值,或在计算中跳过 NA?

我删除了行。我试图在计算中跳过它们,但没有成功。

资产回报率计算示例。 Net_income 和 Total_assets 都有缺失值。而包含其他变量的行本身确实具有有效值。

df['ROA'] = df['net_income'] / df['total_assets']

【问题讨论】:

  • 我没有看到这个问题。如果您在net_incometotal_assets 中有缺失值,那么除了nan 之外,您希望ROA 获得什么值? IE。如果 net_income 的第 3 行是 nantotal_assets 的第 5 行也是 nan,那么您应该期望 ROA 的第 3 行和第 5 行都是 nan
  • 是的,你是对的!我忘了提到还有其他变量,我想在删除 NAN 值时保留这些变量。

标签: python pandas


【解决方案1】:

列的大小必须相同。 你可以使用 Numpy:

如果您有:

import numpy as np
import pandas as pd
df = pd.DataFrame([[1,2],[1,np.nan],[1,2]],columns=['id','age'])

你可以使用 np.divide

A = np.divide(df['id'].values,df['age'].values)

答案是:

array([0.5, nan, 0.5])

现在您可以使用:

A = A[~np.isnan(A)]

那么你有这个:

[0.5 0.5]

【讨论】:

  • 它们的大小是否相同,但有时会丢失一个值。因此,使其仍然平衡,因为它们在某些行中都缺少一些值。我想巩固它们并平衡结果。
  • 我明白你的意思。这个问题有很多解决方案,比如 AI 解决方案。
  • 如果删除一行并不重要,那么您执行此解决方案即可正常工作。
  • 谢谢!但这确实很重要。我只想删除值而不是整个列/行。
  • numpy 可以处理 nan 参数。如果你用 numpy 划分,那么你可以删除 nan 值。
猜你喜欢
  • 1970-01-01
  • 2013-11-06
  • 2014-10-09
  • 1970-01-01
  • 2018-12-01
  • 2020-10-02
  • 2014-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多