【问题标题】:why having std for 1 column and others are nan?为什么有 1 列的 std 而其他的是 nan?
【发布时间】:2021-04-03 15:50:03
【问题描述】:

我的 DataFrame 看起来像这样,但形状 (345,5) 像这样

|something1|  something2|  numbers1| number2 |number3|
|----------|------------|----------|---------|-------|
| A        | str        |    45    | nan     |nan    |
|B         | str2       |   6      |  nan    | nan   |
| c        | str3       |   34     |  67     | 45    |
|D         | str4       |    56    |  45     | 23    |

我只想使用我的手动 std 函数获取数字列的 std 并保存在字典中,问题是我只为第一列得到这个结果:

{'number1': 18.59267328815305,
 'number2': nan,
 'number3': nan,
 'number4': nan}

这是我的代码:

std = {column:std_func(df[column].values) for column in df.columns}

【问题讨论】:

  • std_func在哪里?
  • 你的std_func()是什么?

标签: python pandas dataframe nan dictionary-comprehension


【解决方案1】:

熊猫可以解决这个问题,试试吧

df[['numbers1', 'numbers2', 'numbers3']].std()

默认情况下会跳过 NaN: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.std.html

如果你想在 dict 中这样做,那么:

df[['numbers1', 'numbers2', 'numbers3']].std().to_dict()

编辑:如果您对使用自定义标准偏差函数非常执着,请在应用之前从列中删除:

std = {column:std_func(df[column].dropna().values) for column in df.columns}

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.dropna.html

【讨论】:

    猜你喜欢
    • 2011-01-10
    • 2015-08-28
    • 2012-12-11
    • 1970-01-01
    • 2013-12-17
    • 2018-09-08
    • 1970-01-01
    • 2013-07-25
    相关资源
    最近更新 更多