微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将标量广播到pandas数据帧中的过滤列

我希望将表达式的结果广播到数据帧,但不是整个列,只是过滤子集.简化如下:

In [6]: df1 = DataFrame({"A":[1, 2, 3, 4], "B":["w", "x", "y", "z"], "C":(numpy.
zeros((4), dtype='S1'))})

In [7]: df1
Out[7]:
   A  B C
0  1  w
1  2  x
2  3  y
3  4  z

所以A和B包含我现有的数据,C列准备输入我的结果.所以我可以如下所示广播到整个专栏:

In [9]: df1['C'] = 'H'

In [10]: df1
Out[10]:
   A  B  C
0  1  w  H
1  2  x  H
2  3  y  H
3  4  z  H

但是如果我尝试广播(在这个例子中,字母“R”)到过滤的子集:

In [14]: (df1[df1['A'] > 2])['C']
Out[14]:
2    H
3    H
Name: C

(只是为了证明过滤效果)

所以现在我尝试将“R”分配给这个子集..

In [12]: (df1[df1['A'] > 2])['C'] = "R"

In [13]: df1
Out[13]:
   A  B  C
0  1  w  H
1  2  x  H
2  3  y  H
3  4  z  H

但我的价值观保持不变:(虽然有趣的是我没有收到错误!?)
请任何人都可以建议我可以实现这一目标吗?

非常感谢,

解决方法:

首先选择列,然后过滤:

df1['C'][df1['A'] > 2] = "R"

   A  B  C
0  1  w  H
1  2  x  H
2  3  y  R
3  4  z  R

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐