繁体   English   中英

根据另一个文件中的数据计算一列的值

[英]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

请注意,此输出与zoomaugment结果不匹配,因为File A中的输入与输出不匹配

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM