![](/img/trans.png)
[英]Can we insert values of one column from one data frame to another column of another dataframe based on index using python?
[英]Calculate values of a column of one based on data from another file
我是 python 编程的新手,但我认为它是解决我的问题的最佳语言。 我需要根据列名乘以一列数据的值。 列数据将与文件中的值相乘。
文件如下:
文件A:
文件乙:
对于作为文件 A 列中标题的任何值(塑料、缩放、杂乱、分类、增强、重用、噪声、不规则、事件),请查看文件 B 的第一列。如果找到(例如,塑料是在文件 B) 中的位置 [5: 0] 处找到,乘以引用值(即 -0.00065165),忽略零。 如果在文件 B 中找不到文件 A 的列中的标题值(plastic、zoom、clutter、taxonomi、augment、reus、nois、inequ、event),则忽略。
输出需要像这样并保存在一个 C 文件中:
注释:zoom、taxonomi 和inequ 没有改变,因为所有值都是0。clutter、reus 和nois 没有改变,因为它们在文件B 中没有找到。
有人能帮我吗? 我正在使用熊猫,但我无法解决它。
您可以读取文件 B 并创建字典。 然后根据列名进行查找并进行数学计算。 这是我如何做到的。 获得最终结果后,您可以决定使用 pandas csv 文件写入选项。
import pandas as pd
c = ['plastic','zoom','clutter',
'taxonomi','augment','reus',
'nois','inequ','event']
d = [[1,0,0,0,3,0,2,0,0],[0,0,2,0,0,4,0,0,1],[0,0,1.125,0,0,0,5,0,0],
[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,5,0,0,0,3,0,0,0],
[0,0,0,0,0,0,1,0,0],[0,0,4,0,0,0,2,0,0]]
df = pd.DataFrame(data=d,columns=c)
b = {'say':-0.00065165,'event':0.21651611,'test':1.41651657,
'augment':-0.98526511, 'plastic':-0.00065165,'zoom':-0.00065165,
'taxonomi':-0.00065865, 'go':5.18909071,'make':-0.00633282,
'get':0.000924913,'one':-0.00116829,'inequ':0.05518548}
for i in df.columns:
if i in b: df[i] = df[i] * b[i]
df[df == -0.0] = 0
print (df)
输出如下:
plastic zoom clutter taxonomi augment reus nois inequ event
0 -0.000652 0.000000 0.000 0.0 -2.955795 0 2 0.0 0.000000
1 0.000000 0.000000 2.000 0.0 0.000000 4 0 0.0 0.216516
2 0.000000 0.000000 1.125 0.0 0.000000 0 5 0.0 0.000000
3 0.000000 0.000000 0.000 0.0 0.000000 0 0 0.0 0.000000
4 0.000000 0.000000 0.000 0.0 0.000000 0 0 0.0 0.000000
5 0.000000 -0.003258 0.000 0.0 0.000000 3 0 0.0 0.000000
6 0.000000 0.000000 0.000 0.0 0.000000 0 1 0.0 0.000000
7 0.000000 0.000000 4.000 0.0 0.000000 0 2 0.0 0.000000
请注意,此输出与zoom
和augment
结果不匹配,因为File A
中的输入与输出不匹配
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.