我有两个DataFrames,每个维度都是正确的,我只想将每个列中的一个特定列相乘:
我的第一个DataFrame是:
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是:
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_sim的patched_benchmark_df_sim列的每个元素乘以patched_benchmark_df_syn的fmax列的对应元素,然后将结果存储到一个新的DataFrame中,它具有完全相同的结构,连接build_number和name列,但是现在包含所有数值数据的最后一列将称为latency,这是fmax和cycles的产物。
所以输出DataFrame必须如下所示:
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列。难道没有内置熊猫的方法能为我做到这一点吗?我怎样才能继续进行乘法,才能得到我需要的结果?
非常感谢。
发布于 2015-02-26 10:32:03
最简单的方法是向df中添加一个新列,然后选择您想要的列,如果您想将这些列分配给一个新的df:
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。
https://stackoverflow.com/questions/28739931
复制相似问题