我有一个包含以下列的excel文件:v1,v2,commID
我有另一个包含列的文件:Index,Name
现在我想通过引用第二个文件将v1和v2替换为相应的名称并将其写入新文件。格式为v1,v2,commID,但这次v1和v2应该是名称,而commID应该是相同的数字。我可以在excel,python或matlab中完成。
答案 0 :(得分:0)
显然,根据需要更改文件和内容的名称,但这对我有用!这使用openpyxl,我相信它包含在Anaconda的python发行版中。此外,这可能不是最好的方法,但它确实有效。
import openpyxl
wb1 = openpyxl.load_workbook(filename="wb1.xlsx")
wb2 = openpyxl.load_workbook(filename="wb2.xlsx")
output_file = openpyxl.Workbook()
dest_filename = "outputWorkbook.xlsx"
commIDlist, nameList = [], []
for item in wb1['Sheet1']['C']:
commIDlist.append(item.value)
for item in wb2['Sheet1']['B']:
nameList.append(item.value)
ws1 = output_file.active
ws1.title = "Data Ouput"
i = 0
j = 0
for row in range(1, len(nameList)):
_ = ws1.cell(column=1, row=row, value=nameList[i])
j += 0
for row in range(1, len(commIDlist)):
_ = ws1.cell(column=2, row=row, value=commIDlist[i])
i += 1
output_file.save(filename=dest_filename)
答案 1 :(得分:0)
我建议你两个解决方案:一个用于Excel,一个用于Matlab。选择你喜欢的那个(如果你不需要用Matlab处理数据,我建议你去寻找第一个解决方案并坚持使用Excel。)
<强> EXCEL 强>
坚持使用Excel来解决这个问题,我会采用手动方法。在这种情况下,您必须使用的唯一功能是VLOOKUP。让我们看看如何一步一步地进行:
v1
,v2
和commID
列的文件)并将其内容复制粘贴到新文件的第一张文件中。Index
和Name
的文件)并将其内容复制粘贴到新文件的第二张文件中。v1
行D
中插入字符串1
(用于复制标题)。在列D
行2
:=VLOOKUP(A2;B!A:B;2;FALSE)
中插入以下公式,然后将其复制到底部。v2
行E
中插入字符串1
(用于复制标题)。在列E
行2
:=VLOOKUP(B2;B!A:B;2;FALSE)
中插入以下公式,然后将其复制到底部。D
和E
列(重新映射的v1
和v2
)并复制其内容(CTRL+C
)。现在,选择整个A
和B
列(旧v1
和v2
)并粘贴之前复制的内容(使用Paste Values
特殊功能从上下文菜单)。<强> MATLAB 强>
由于您的问题非常接近SQL
联接操作,我会选择表(通过使用readtable函数解析Excel文件获得)和内置join功能:
% Read the content of both Excel files...
F1 = readtable('File1.xlsx');
F2 = readtable('File2.xlsx');
% Join the table F1 with F2 on v1 = Index...
T1 = join(F1,F2,'LeftKeys',{'v1'},'RightKeys',{'Index'});
% Join the table F1 with F2 on v2 = Index...
T2 = join(F1,F2,'LeftKeys',{'v2'},'RightKeys',{'Index'});
% Create the final table combining T1.Name (as v1), T2 (as v2) and F1.commID (as commID)...
T = table(T1.Name,T2.Name,F1.commID,'VariableNames',{'v1' 'v2' 'commID'});
% Save the result into a new file...
writetable(T,'File3.xlsx');
假设第一个文件(File1.xlsx
)的内容是:
v1 v2 commID
__ __ ______
2 1 1
2 1 1
3 4 1
3 5 2
1 4 1
,第二个文件(File2.xlsx
)的内容为:
Index Name
_____ _____
1 'AAA'
2 'BBB'
3 'CCC'
4 'DDD'
5 'EEE'
然后最终输出将是:
v1 v2 commID
_____ _____ ______
'BBB' 'AAA' 1
'BBB' 'AAA' 1
'CCC' 'DDD' 1
'CCC' 'EEE' 2
'AAA' 'DDD' 1