您好我已经处理了一个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”,最后是“PARAMETER3”,第三列是raw,对于每个原始或者这个archive我需要生成一个填充模板占位符的表,如下所示:
"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)
我不确定什么是最好的方法继续进行,因为我曾经使用“sed”和“awk”在bash中做那种事情但是这次我想尝试使用pandas和python我真的很感激任何继续执行此特定任务的建议。
答案 0 :(得分: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"