首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将两个输入DataFrames中的每一列相乘一列

将两个输入DataFrames中的每一列相乘一列
EN

Stack Overflow用户
提问于 2015-02-26 10:27:52
回答 1查看 259关注 0票数 0

我有两个DataFrames,每个维度都是正确的,我只想将每个列中的一个特定列相乘:

我的第一个DataFrame是:

代码语言:javascript
运行
复制
In [834]: patched_benchmark_df_sim
Out[834]: 
     build_number      name  cycles
0             390     adpcm   21598
1             390       aes    5441
2             390  blowfish     NaN
3             390     dfadd     463
....
284           413      jpeg  766742
285           413      mips    4263
286           413     mpeg2    2021
287           413       sha  348417

[288 rows x 3 columns]

我的第二个DataFrame是:

代码语言:javascript
运行
复制
In [835]: patched_benchmark_df_syn
Out[835]: 
     build_number      name    fmax
0             390     adpcm  143.45
1             390       aes  309.60
2             390  blowfish     NaN
3             390     dfadd  241.02
....
284           413      jpeg  197.75
285           413      mips  202.39
286           413     mpeg2  291.29
287           413       sha  243.19

[288 rows x 3 columns]

我想把patched_benchmark_df_simpatched_benchmark_df_sim列的每个元素乘以patched_benchmark_df_synfmax列的对应元素,然后将结果存储到一个新的DataFrame中,它具有完全相同的结构,连接build_numbername列,但是现在包含所有数值数据的最后一列将称为latency,这是fmaxcycles的产物。

所以输出DataFrame必须如下所示:

代码语言:javascript
运行
复制
    build_number      name    latency
0            390     adpcm    ## each value here has to be product of cycles and fmax and they must correspond to one another ##
......

我试着做一个简单的patched_benchmark_df_sim * patched_benchmark_df_syn,但是这不能工作,因为我的DataFrames有一个字符串类型的name列。难道没有内置熊猫的方法能为我做到这一点吗?我怎样才能继续进行乘法,才能得到我需要的结果?

非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-26 10:32:03

最简单的方法是向df中添加一个新列,然后选择您想要的列,如果您想将这些列分配给一个新的df:

代码语言:javascript
运行
复制
In [356]:

df['latency'] = df['cycles'] * df1['fmax']
df
Out[356]:
     build_number      name  cycles       latency
0             390     adpcm   21598  3.098233e+06
1             390       aes    5441  1.684534e+06
2             390  blowfish     NaN           NaN
3             390     dfadd     463  1.115923e+05
284           413      jpeg  766742  1.516232e+08
285           413      mips    4263  8.627886e+05
286           413     mpeg2    2021  5.886971e+05
287           413       sha  348417  8.473153e+07
In [357]:

new_df = df[['build_number', 'name', 'latency']]
new_df
Out[357]:
     build_number      name       latency
0             390     adpcm  3.098233e+06
1             390       aes  1.684534e+06
2             390  blowfish           NaN
3             390     dfadd  1.115923e+05
284           413      jpeg  1.516232e+08
285           413      mips  8.627886e+05
286           413     mpeg2  5.886971e+05
287           413       sha  8.473153e+07

正如您所发现的,您不能像您尝试的那样将非数字类型df相乘。以上假设build_number和name列来自两个dfs。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28739931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档