2016-08-30 21 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