python - 为什么有 1 列的 std 而其他的是 nan?
问题描述
我有 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}
解决方案
熊猫可以处理这个,试试吧
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
推荐阅读
- python - 我正在尝试使用 python Jupiter Notebook 运行 xgboost,但出现此错误: AttributeError: module 'xgboost' has no attribute 'set_params'
- windows - 如何根据文件属性列出文件夹和子文件夹中的所有文件,特别是具有 ALOM 属性的文件(Windows 10)?
- android - gradle 依赖版本排序不正确
- javascript - 实现 React 设计系统时构建 NodeJS 时出错
- java - 部署到 Wildfly 失败消息:未定义(CORBA.INTERNAL:次要代码:208)
- node.js - Electron - 限制渲染器的 Internet 访问
- php - 在 php 中设置 Adwords 转换脚本
- flutter - Flutter 对象未在函数内部初始化
- reactjs - Redux Thunk:Redux Thunk 未在我的屏幕上显示来自 Jsonplaceholder 的数据
- javascript - 在 React 中的组件之间使用钩子共享辅助函数