2016-08-30 45 views
0

你好,我有处理一个excel文件,并利用它的一些参数来创建多个表的表的结构如下:如何构建下列表格?

"AWK|USL|R|SVKDIKG_tVstiKg|S|[PARAMETER1]~BURAGO~[PARAMETER2]~WVDG~333" "AFUSLR~USLSSHS~Farm~~%ERD_ARGV=MR4567.%VRSD%.%23WF%.333.%RVB%.tRt" 
"AWK|USL|R|Bimbo|S|[PARAMETER3]~K~999" "USLo99941VRR.VxV" 
"AWK|USL|R|Bimbo|S|[PARAMETER3]~Q~999" "USLo99941VRR.VxV" 
"AWK|USL|R|Ford|S|[PARAMETER3]~K~999" "[PARAMETER3]~K" 
"AWK|USL|R|Ford|S|[PARAMETER3]~Q~999" "[PARAMETER3]~K" 

,我需要用它来创建表中包含的参数一个excel文件,它们看起来如下:

123123,RIBICOM,FACTIBLE 
050944,TELCOM,423423 
. 
. 
. 
42342,CORPS,233243 

的想法是走“”作为一个列分隔符,其中拳头列将是‘PARAMETER1’,第二列‘PARAMETER2’,最后“参数3 “第三栏是原始的,对于每个原始的或这个档案,我需要制作一张填满这个地方的表格我的模板的lders如下:

"AWK|USL|R|SVKDIKG_tVstiKg|S|123123~BURAGO~RIBICOM~WVDG~333" "AFUSLR~USLSSHS~Farm~~%ERD_ARGV=MR4567.%VRSD%.%23WF%.333.%RVB%.tRt" 
"AWK|USL|R|Bimbo|S|FACTIBLE~K~999" "USLo99941VRR.VxV" 
"AWK|USL|R|Bimbo|S|FACTIBLE~Q~999" "USLo99941VRR.VxV" 
"AWK|USL|R|Ford|S|FACTIBLE~K~999" "FACTIBLE~K" 
"AWK|USL|R|Ford|S|FACTIBLE~Q~999" "FACTIBLE~K" 

更清晰的模板的占位符是如下:

[PARAMETER1] 
[PARAMETER2] 
[PARAMETER3] 

这些都是我需要填写的东西,

的上面的例子将是第一行所需的输出,我需要生成一个包含所有表的串联的txt文件,以实现此目的我尝试过:

import pandas as pd 
# -*- coding: utf-8 -*- 
xl = pd.ExcelFile("Book1.xlsx") 
#to clean from duplicates 
df = xl.parse("Sheet1") 
df=df.drop_duplicates() 
#these are the values that I am concatenating below 
Parameter1=df[u'Header1 '] 
Parameter2=df[u'Header2 '] 
Parameter3=df[u'Header3 '] 

#This is the dataframe with the corresponding columns 
important_Parameters=df[u'Header1 '].astype(str)+","+df[u'Header2 '].astype(str)+","+df[u'Header3 '].astype(str) 

#to write my dataframe on disk. 
important_Parameters.to_csv("important33.txt", index=False) 

我不知道什么是最好的方法来进行,因为我曾经在bash中使用“sed”和“awk”来做类似的事情,但这次我想尝试使用熊猫和Python,我真的很感激任何建议继续这个特定的任务。

+0

输入和输出看起来是一样的,你能澄清的一样吗?还有什么试图做Parameter1,Parameter2和Parameter3 – Shijo

+0

是肯定的事实上,我只需要替换下面的符号“[”,“]”我做了一些占位符命名:[PARAMETER1],[PARAMETER2]和[ PARAMETER3]用大写字母表示, – neo33

+0

您是否必须使用数据框?你可以使用字典或json吗? – WeShall

回答

2

你试试这个

import pandas as pd 
# -*- coding: utf-8 -*- 
df = pd.read_csv("param.csv") 
print df 
df=df.drop_duplicates() 
filename='sample.txt' 

print "\n\nReplace with new values" 
for index, row in df.iterrows(): 
    print "New Values \n\n" 
    print row 
    f=open(filename) 
    filedata = f.read() 
    filedata=filedata.replace("[PARAMETER1]",row[0]) 
    filedata=filedata.replace('[PARAMETER2]',row[1]) 
    filedata=filedata.replace('[PARAMETER3]',row[2]) 
    print filedata 

输出

 Parameter1 Parameter2 Parameter3 
    0 123123A RIBICOM FACTIBLE 
    1 050944BS  TELCOM  423423 


    Replace with new values 
    New Values 


    Parameter1  123123A 
    Parameter2  RIBICOM 
    Parameter3 FACTIBLE 
    Name: 0, dtype: object 
    AWK|USL|R|SVKDIKG_tVstiKg|S|123123A~BURAGO~RIBICOM~WVDG~333 AFUSLR~USLSSHS~Farm~ 
    ~%ERD_ARGV=MR4567.%VRSD%.%23WF%.333.%RVB%.tRt 
    AWK|USL|R|Bimbo|S|FACTIBLE~K~999 USLo99941VRR.VxV 
    AWK|USL|R|Bimbo|S|FACTIBLE~Q~999 USLo99941VRR.VxV 
    AWK|USL|R|Ford|S|FACTIBLE~K~999 FACTIBLE~K 
    AWK|USL|R|Ford|S|FACTIBLE~Q~999 FACTIBLE~K 
    New Values 


    Parameter1 050944BS 
    Parameter2  TELCOM 
    Parameter3  423423 
    Name: 1, dtype: object 
    AWK|USL|R|SVKDIKG_tVstiKg|S|050944BS~BURAGO~TELCOM~WVDG~333 AFUSLR~USLSSHS~Farm~ 
    ~%ERD_ARGV=MR4567.%VRSD%.%23WF%.333.%RVB%.tRt 
    AWK|USL|R|Bimbo|S|423423~K~999 USLo99941VRR.VxV 
    AWK|USL|R|Bimbo|S|423423~Q~999 USLo99941VRR.VxV 
    AWK|USL|R|Ford|S|423423~K~999 423423~K 
    AWK|USL|R|Ford|S|423423~Q~999 423423~K 

Sample.txt的

"AWK|USL|R|SVKDIKG_tVstiKg|S|[PARAMETER1]~BURAGO~[PARAMETER2]~WVDG~333" "AFUSLR~USLSSHS~Farm~~%ERD_ARGV=MR4567.%VRSD%.%23WF%.333.%RVB%.tRt" 
"AWK|USL|R|Bimbo|S|[PARAMETER3]~K~999" "USLo99941VRR.VxV" 
"AWK|USL|R|Bimbo|S|[PARAMETER3]~Q~999" "USLo99941VRR.VxV" 
"AWK|USL|R|Ford|S|[PARAMETER3]~K~999" "[PARAMETER3]~K" 
"AWK|USL|R|Ford|S|[PARAMETER3]~Q~999" "[PARAMETER3]~K" 
+0

Hello thanks a很多的支持,这是非常有益的,只有一件事是什么文件的内容c alled:sample.txt,遵循你的方法。 – neo33

+0

包含表格的文件在哪里? – neo33

+0

我刚刚收录了Sample的内容。txt – Shijo