使用python将特定数据从一个excel文件传输到另一个excel文件

2024-10-08 18:26:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始学习Python,我需要一个实习时让我写的脚本的帮助。在

我有一个csv文件(sheet1.csv),我只需要从标题referenceID和PartNumber相互对应的两个列中提取数据。我需要更新一个名为sheet2.csv的单独csv文件,该文件还包含referenceID和PartNumber两列,但是许多PartNumber单元格都是空的。在

基本上,我需要用sheet1中的值填充“PartNumber”字段。根据我所做的研究,我决定使用字典是写这个脚本的一个可靠的方法(我认为)。到目前为止,我已经能够阅读这些文件并创建两个字典,其中referenceid作为键,PartNumber作为值……下面是我展示的字典的示例。在

import csv 
a = open('sheet1.csv', 'rU')
b = open('sheet2.csv', 'rU')
csvReadera = csv.DictReader(a)
csvReaderb = csv.DictReader(b)
a_dict = {}
b_dict = {}

for line in csvReadera:
    a_dict[line["ReferenceID"]] = line["PartNumber"]
print(a_dict)

for line in csvReaderb:
    b_dict[line["ReferenceID"]] = line["PartNumber"]
print(b_dict)

a_dict = {'R150': 'PN000123', 'R331': 'PN000873', 'C774': 'PN000064', 'L7896': 'PN000447', 'R0640': 'PN000878', 'R454': 'PN000333'}
b_dict = {'C774': '', 'R331': '', 'R454': '', 'L7896': 'PN000000', 'R0640': '', 'R150': 'PN000333'}

如何比较这两个字典,并填写/覆盖b-dict的缺失值,然后写入表2?当然,肯定有比我所想到的更有效的方法,但是我以前从未使用过Python,所以请原谅我可怜的尝试!在


Tags: 文件csv方法脚本字典rulineopen
1条回答
网友
1楼 · 发布于 2024-10-08 18:26:10

看看熊猫图书馆。在

import padas as pd

#this is how you read
dfa = pd.read_csv("sheet1.csv")
dfb = pd.read_csv("sheet2.csv")

让我们来看看你定义为testdata的dicts

^{pr2}$

你明白了吗

  In [97]: dfa
Out[97]: 
  ReferenceIDA PartNumberA
0         R331    PN000873
1         R454    PN000333
2        L7896    PN000447
3         R150    PN000123
4         C774    PN000064
5        R0640    PN000878

In [98]: dfb
Out[98]: 
  ReferenceIDB PartNumberB
0         R331            
1         R454            
2        R0640            
3         R150    PN000333
4         C774            
5        L7896    PN000000

现在

    In [67]: cd = pd.concat([dfa,dfb], axis=1)

    In [68]: cd
    Out[68]: 
  ReferenceIDA PartNumberA ReferenceIDB PartNumberB
0         R331    PN000873         R331            
1         R454    PN000333         R454            
2        L7896    PN000447        R0640            
3         R150    PN000123         R150    PN000333
4         C774    PN000064         C774            
5        R0640    PN000878        L7896    PN000000




cd["res"] = cd.apply(lambda x : x["PartNumberB"] if x["PartNumberB"] else x["PartNumberA"], axis=1)

 cd
Out[106]: 
  ReferenceIDA PartNumberA ReferenceIDB PartNumberB       res
0         R331    PN000873         R331              PN000873
1         R454    PN000333         R454              PN000333
2        L7896    PN000447        R0640              PN000447
3         R150    PN000123         R150    PN000333  PN000333
4         C774    PN000064         C774              PN000064
5        R0640    PN000878        L7896    PN000000  PN000000

这就是你想要的

刚准备好

dfbr['PartNumber'] = cd['res']

并转储到csv

dfbr.to_csv('sheet2.csv')

相关问题 更多 >

    热门问题