我有一个有多列的熊猫数据框.我想从行中的值和另一个列向量数据框的权重创建一个新的columns

weighted_sum应具有以下值:

行[weighted_sum] =行[col0] *权重[0]行[col1] *权重[1]行[col2] *权重[2] …

我发现函数sum(axis = 1),但它不让我乘以重量.

编辑:
我改变了一些事情.

体重看起来像这样:

0
col1 0.5
col2 0.3
col3 0.2

df看起来像这样:

col1 col2 col3
1.0  2.2  3.5
6.1  0.4  1.2

df * weight返回一个包含Nan值的数据帧.

解决方法

问题是您将帧与不同大小的帧与不同的行索引相乘.这是解决方案:
In [121]: df = DataFrame([[1,2.2,3.5],[6.1,0.4,1.2]],columns=list('abc'))

In [122]: weight = DataFrame(Series([0.5,0.3,0.2],index=list('abc'),name=0))

In [123]: df
Out[123]:
           a          b          c
0       1.00       2.20       3.50
1       6.10       0.40       1.20

In [124]: weight
Out[124]:
           0
a       0.50
b       0.30
c       0.20

In [125]: df * weight
Out[125]:
           0          a          b          c
0        nan        nan        nan        nan
1        nan        nan        nan        nan
a        nan        nan        nan        nan
b        nan        nan        nan        nan
c        nan        nan        nan        nan

您可以访问列:

In [126]: df * weight[0]
Out[126]:
           a          b          c
0       0.50       0.66       0.70
1       3.05       0.12       0.24

In [128]: (df * weight[0]).sum(1)
Out[128]:
0         1.86
1         3.41
dtype: float64

或者使用点来获取另一个DataFrame

In [127]: df.dot(weight)
Out[127]:
           0
0       1.86
1       3.41

把它们整合在一起:

In [130]: df['weighted_sum'] = df.dot(weight)

In [131]: df
Out[131]:
           a          b          c  weighted_sum
0       1.00       2.20       3.50          1.86
1       6.10       0.40       1.20          3.41

以下是每个方法的时间,使用较大的DataFrame.

In [145]: df = DataFrame(randn(10000000,3),columns=list('abc'))
weight
In [146]: weight = DataFrame(Series([0.5,name=0))

In [147]: timeit df.dot(weight)
10 loops,best of 3: 57.5 ms per loop

In [148]: timeit (df * weight[0]).sum(1)
10 loops,best of 3: 125 ms per loop

对于广泛的DataFrame:

In [162]: df = DataFrame(randn(10000,1000))

In [163]: weight = DataFrame(randn(1000,1))

In [164]: timeit df.dot(weight)
100 loops,best of 3: 5.14 ms per loop

In [165]: timeit (df * weight[0]).sum(1)
10 loops,best of 3: 41.8 ms per loop

所以,点更快,更可读.

注意:如果您的任何数据包含NaN,那么您不应该使用点,您应该使用乘法和sum方法.点不能处理NaN,因为它只是一个薄的包装器,在numpy.dot()(它不处理NaNs).

python – 如何计算熊猫中一行中所有元素的加权和?的更多相关文章

  1. XCode 3.2 Ruby和Python模板

    在xcode3.2下,我的ObjectiveCPython/Ruby项目仍然可以打开更新和编译,但是你无法创建新项目.鉴于xcode3.2中缺少ruby和python的所有痕迹(即创建项目并添加新的ruby/python文件),是否有一种简单的方法可以再次安装模板?我发现了一些关于将它们复制到某个文件夹的信息,但我似乎无法让它工作,我怀疑文件夹的位置已经改变为3.2.解决方法3.2中的应用程序模板

  2. Swift之旅三函数与闭包

    用func来定义一个函数。试一试去掉day参数。你可以用嵌套函数来把又长又臭的代码组织一下。函数其实是闭包的一个特例。闭包内的代码可以访问到变量和函数必须是与闭包创建的范围是一致的,即便闭包是在另一个范围内执行——在讲嵌套函数时就说过这个例子了。试一试重写这个闭包,对所有奇数都返回0有几种方法可以更简明地写闭包。单行语句的闭包隐式返回语句中的值。作为最后一个参数传到函数里的闭包可以在括号后面马上出现。

  3. Swift基本使用-函数和闭包(三)

    声明函数和其他脚本语言有相似的地方,比较明显的地方是声明函数的关键字swift也出现了Python中的组元,可以通过一个组元返回多个值。传递可变参数,函数以数组的形式获取参数swift中函数可以嵌套,被嵌套的函数可以访问外部函数的变量。可以通过函数的潜逃来重构过长或者太复杂的函数。

  4. Swift 学习笔记 4-函数

    欢迎加QQ群讨论:157672725函数1.使用func来声明一个函数,使用名字和参数来调用函数,使用->来指定函数返回值的类型2.使用元组来让一个函数返回多个值。该元组的元素可以用名称或数字来表示3.函数可以带有可变个数的参数,这些参数在函数内表现为数组的形式4.函数可以嵌套,被嵌套的函数可以访问外侧函数的变量5.函数可以作为另一个函数的返回值6.函数做参数传入另一个函数

  5. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  6. Snail—Swift基础学习之函数

  7. Swift学习一:认识必要数据类型

    我很高兴为你讲解我的学习过程。首先,你会问为什么不选择ObjC而是Swift,我想这个问题只有苹果自己知道,我们只有猜。不过从代码结构上来看Swift确实比OC简洁多了,Swift省掉那些OC难以理解的符号,比如NSLog传递消息时是这么写的:NSLog;学过C#的Programmer应该认识这个@,在OC中我不知道怎么理解,所以就不管了。首先,我强烈建议去买台MAC,也就一万左右。我的虚拟机是:VMwareWorkstation12.1.0+OSXEICapitan10.11.2,请原谅我是一个强迫症患

  8. Swift -- 函数的使用(函数作为参数、返回值、嵌套函数)

    {ifarr.count==0{returnnil}varmax:Int=arr[0]varmin:Int=arr[0]varavg:Float=0varsum:Int=arr[0]varindex=0foriteminarr{index++ifitem>max{max=item}ifitemInt{varsum=0;foriteminnums{sum+=item}returnsum}varx=sum()vary=sumvarz=sum//函数嵌套funcfifteen()->Int{varx=10fun

  9. swift 中常用的进制转换

  10. Swift、Go、Julia与R能否挑战 Python 的王者地位

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部