熊猫用正则表达式选择列并除以值

NumesSanguis;

我想将匹配正则表达式的某些列中的所有值除以某个值,并且仍然具有完整的数据框。

如在此处可以找到:如何通过regex从数据帧中选择列,例如,以d开头的所有列均可通过以下方式选择:

df.filter(regex=("d.*"))

现在,我已经选择了需要的列,我想例如将值除以2。这可以通过以下代码实现:

df.filter(regex=("d.*")).divide(2)

但是,如果我尝试像这样更新我的数据框,它将给出一个can't assign to function call

df.filter(regex=("d.*")) = df.filter(regex=("d.*")).divide(2)

如何正确更新现有的df?

盗版:

以下技术不限于与过滤器一起使用,并且可以更广泛地应用。

设置
我将使用@cᴏʟᴅsᴘᴇᴇᴅ设置
,让df是:

   d1  d2  abc
0   5   1    8
1  13   8    6
2   9   4    7
3   9  16   15
4   1  20    9

就地更新
使用将采用参数数据框,并在索引和列值与参数匹配的地方更改调用数据pd.DataFrame.update
update

df.update(df.filter(regex='d.*') / 3)
df

         d1        d2  abc
0  1.666667  0.333333    8
1  4.333333  2.666667    6
2  3.000000  1.333333    7
3  3.000000  5.333333   15
4  0.333333  6.666667    9

内联复制
使用我使用double splat 将参数数据框解包到字典中,其中列名是键,而列的序列是值。这与所需的签名匹配,并覆盖生成的副本中的那些列。简而言之,这是调用数据帧的副本,其中的列已被适当覆盖。pd.DataFrame.assign
**assign

df.assign(**df.filter(regex='d.*').div(3))

         d1        d2  abc
0  1.666667  0.333333    8
1  4.333333  2.666667    6
2  3.000000  1.333333    7
3  3.000000  5.333333   15
4  0.333333  6.666667    9

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章