引入条件时无法使用 fillna

2024-02-28

我对 python 很陌生。尝试对我的数据进行一些插补。然而,我无法做到。这是简单的代码:

df['a'] = ""
df.loc[(df['c'] >= 0) & (df['c'] <= 43), 'a'] = 1
df.loc[(df['c'] >= 44) & (df['c'] <= 96), 'a'] = 2
df.loc[(df['c'] >= 97) & (df['c'] <= 151), 'a'] = 3
df.loc[(df['c'] >= 152) & (df['c'] <= 273), 'a'] = 4

print(df[df['a'] == 1]['b'].median())
print(df[df['a'] == 2]['b'].median())
print(df[df['a'] == 3]['b'].median())
print(df[df['a'] == 4]['b'].median())

print(df[df['a'] == 1]['b'].median())

    df[df['a'] == 1]['b'].fillna(df[df['a'] == 1]['b'].median(), inplace=True)

当我尝试这样做时,它发出了警告:

A value is trying to be set on a copy of a slice from a DataFrame

如何正确使用 fillna?


Use loc http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.loc.html:

df = pd.DataFrame({'c':[10,50,100,200] * 3,
                   'b':[1,3,8,np.nan,5,8,np.nan,7, np.nan, 4,1,0]})
#print (df)
m1 = (df['c'] >= 0) & (df['c'] <= 43)
m2 = (df['c'] >= 44) & (df['c'] <= 96)
m3 = (df['c'] >= 97) & (df['c'] <= 151)
m4 = (df['c'] >= 152) & (df['c'] <= 273)

df.loc[m1,'b'] = df.loc[m1,'b'].fillna(df.loc[m1,'b'].median())
df.loc[m2,'b'] = df.loc[m2,'b'].fillna(df.loc[m2,'b'].median())
df.loc[m3,'b'] = df.loc[m3,'b'].fillna(df.loc[m3,'b'].median())
df.loc[m4,'b'] = df.loc[m4,'b'].fillna(df.loc[m4,'b'].median())

print (df)
      b    c
0   1.0   10
1   3.0   50
2   8.0  100
3   3.5  200
4   5.0   10
5   8.0   50
6   4.5  100
7   7.0  200
8   3.0   10
9   4.0   50
10  1.0  100
11  0.0  200

但更好的是使用cut http://pandas.pydata.org/pandas-docs/stable/generated/pandas.cut.html对于类别列,然后groupby http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.groupby.html具有自定义功能fillna http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.fillna.html and median http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.median.html:

bins = [0,43,96,151,273]
labels=[1,2, 3, 4]
df['a'] = pd.cut(df['c'], bins=bins, labels=labels, include_lowest=True)
df['b'] = df.groupby('a')['b'].apply(lambda x: x.fillna(x.median()))
print (df)
      b    c  a
0   1.0   10  1
1   3.0   50  2
2   8.0  100  3
3   3.5  200  4
4   5.0   10  1
5   8.0   50  2
6   4.5  100  3
7   7.0  200  4
8   3.0   10  1
9   4.0   50  2
10  1.0  100  3
11  0.0  200  4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

引入条件时无法使用 fillna 的相关文章

随机推荐

  • 有没有办法以线性调用顺序控制承诺流程?

    我仍然没有严格遵守承诺 假设我有一个代码 selected eq i blink fadeOut 200 delay 50 fadeIn 400 delay 100 fadeOut 200 delay 50 fadeIn 400 后来我打电
  • 如何通过 javax.script 创建和使用字节数组

    我们可以使用 javax script 创建原始数组 如字节数组或 int 数组吗 要在 Mozilla 的 Rhino 中创建 10 字节的 Java 数组 var buff java lang reflect Array newInst
  • 在 Python 列表中保留两个、跳过两个

    我有一个 Python 列表 num list list range 1 33 并且需要列表中的所有其他数字对 如下所示 1 2 5 6 9 10 我已经弄清楚如何从列表中排除某些索引 就像这样 num list 2 3 gt 3 6 9
  • 大型项目的 C# 编译时间(与 C++ 相比)

    我经常听到人们称赞C 的编译速度 到目前为止 我只制作了一些小型应用程序 而且我确实注意到编译速度非常快 但是 我想知道这是否仍然成立大型应用程序 大型 C 项目的编译速度是否比类似大小的 C 项目更快 是的 C 通常编译速度要快得多 但并
  • 针对 ARM 的 x86?

    是否可以在 ARM 机器上使用 gcc 编译为 x86 我找不到任何 march允许完成此操作的选项 如果无法完成 没什么大不了的 但我仍然有兴趣知道是否可能 是的 但你不需要 march 机器 您想要构建或安装一个以arm为主机架构 以x
  • 基于用户角色渲染 JSF 组件

    如何根据登录用户的角色呈现 JSF 组件 我知道外部上下文公开了原理 但是我应该如何在 JSF 中正确进行渲染 在 JSP 中 它会是这样的
  • 在iPhone上实现蓝牙数据传输

    如何为 iPhone 创建蓝牙应用程序 关于控制器我需要了解什么 委托方法 The GameKit框架包含允许通过蓝牙网络进行通信的 API 使用这些APIs 您可以轻松创建点对点游戏和应用程序 用于访问蓝牙的所有各种 API 都位于Gam
  • leiningen 为什么要建立目录层次结构?我可以放弃它吗?

    如果我使用 leiningen 创建一个新的 clojure 项目 它会生成一个如下所示的目录树 doc intro md project clj README md src hello friend core clj test hello
  • 有没有 MXML 接口之类的东西

    这可能是一个愚蠢的问题 所以如果是的话 请提前道歉 我想知道 MXML 中是否有等效的接口 每当我觉得需要使用界面时 我总是会制作一个动作脚本而不是一个 MXML 文件 因为我不知道是否 如何可以 例如 我打算有一个基于 vbox 的组件
  • jQuery 可拖动选项元素

    关于使以下选项元素可拖动有什么技巧吗
  • 我怎样才能使用javascript保护csv文件的密码

    html 表数据导出到 csv 文件 它正在发生 但我想使用 javascript 对 csv 文件进行密码保护 这可能吗 或其他方法做同样的事情 提前致谢 从表面上看 CSV 文件只是一种数据交换格式 其中字段以逗号分隔 每条记录占一行
  • 如何将参数传递给google cloud build中的docker run

    我正在尝试使用 GCB 运行 cypress 管道 但在 docker 内运行时它崩溃了 如描述的那样解决此问题here https github com cypress io cypress issues 350 是运行 docker i
  • 为什么 `my $x = if (0) {1} else {2}` 不起作用?

    在 Perl 中 x if 0 1 else 2 不起作用 perl E x if 0 1 else 2 syntax error at e line 1 near if Execution of e aborted due to comp
  • 我需要服务器才能使用 git 吗?

    如果我需要在工作或其他地方访问我的家庭计算机上的文件 我是否需要有一个网络服务器并在那里签入文件 如果我正在使用git 我还需要服务器还是我实际上在他们的服务器上保存文件 首先 Git 是分散式版本控制系统 这意味着当使用 Git 时 您在
  • 如何用html5 canvas绘制连续的圆形图案

    我有这个图片 and i want to draw with the image as the pattern When i did i got a result on the canvas like this 但我需要输出是 所以我的问题
  • 如何确认网站正在完全信任地运行?

    我给予了网站完全信任 但我仍然遇到一些安全例外情况 如何确认网站完全信任 您可以使用安全管理器 IsGranted http msdn microsoft com en us library system security security
  • 使用 IAM 帐户时 AppSync 查询返回未经授权

    我正在使用 AWS Amplify 我的 GraphQL 架构中有两个如下所示的模型 type Class model auth rules allow owner identityClaim sub allow owner identit
  • Apache Sling 中的 resourceResolver.adaptTo(Session.class) 的用途是什么?

    我是 Apache Sling CQ5 等的新手 在我们的代码库中 我们有一个与此类似的代码片段 void perform SlingHttpServletRequest request SlingHttpServletResponse r
  • Primefaces textEditor:使用 JavaScript 将文本转换为 HTML 不起作用

    首先我要声明这是我的第一个问题 我是这个社区的新人 请善待我 不要犹豫地纠正我 引导我到哪里可以找到答案或学习等 我发布这个问题是为了找到解决方案的最后希望 因为我自己 也没有在同事的帮助下 没有找到或提出任何解决方案 基本上PrimeFa
  • 引入条件时无法使用 fillna

    我对 python 很陌生 尝试对我的数据进行一些插补 然而 我无法做到 这是简单的代码 df a df loc df c gt 0 df c lt 43 a 1 df loc df c gt 44 df c lt 96 a 2 df lo