#EDIT based on @Reinderien answer
EDIT based on @Reinderien answer
#EDIT based on @Reinderien answer
EDIT based on @Reinderien answer
df = pd.read_csv('file1.usr', sep='|')
header_names = ["HeaderKey", "HeaderKey1", "HeaderKey2", "HeaderKey3"]
trailer_namesfooter_names = ["FooterKey", "FooterKey1", "FooterKey2", "FooterKey3"]
groups = {'A': ['AValueKey', 'A2ValueKey', 'A3ValueKey'],
'B': ['BValueKey', 'B2ValueKey', 'B3ValueKey']}
first_group_name = 'A'
df1 = df.iloc[:-1]
s = df1.iloc[:, 0].eq(first_group_name).cumsum()
for i, x in df1.groupby(s):
group = {}
for k, v in x.set_index(x.columns[0]).T.to_dict('l').items():
group[k] = dict(zip(groups[k], v))
header = dict(zip(header_names, df.columns))
trailer =footer= dict(zip(trailer_namesfooter_names, df.iloc[-1]))
file = {'header': header, 'groups': group, 'trailer''footer': trailerfooter}
print(file)
header_names = ["Header"["HeaderKey", "HeaderKey1", "HeaderKey2", "HeaderKey3"]
trailer_names = ["Footer"["FooterKey", "Footer1""FooterKey1", "Footer2""FooterKey2", "Footer3"]"FooterKey3"]
groups = {'A': ['AValueKey', 'A2ValueKey', 'A3ValueKey'],
'B': ['BValueKey', 'B2ValueKey', 'B3ValueKey']}
first_group_name = 'A'
df = pd.read_csv('file1.usr', sep='|')
header_names = ["HeaderKey", "HeaderKey1", "HeaderKey2", "HeaderKey3"]
trailer_names = ["FooterKey", "FooterKey1", "FooterKey2", "FooterKey3"]
groups = {'A': ['AValueKey', 'A2ValueKey', 'A3ValueKey'],
'B': ['BValueKey', 'B2ValueKey', 'B3ValueKey']}
first_group_name = 'A'
df1 = df.iloc[:-1]
s = df1.iloc[:, 0].eq(first_group_name).cumsum()
for i, x in df1.groupby(s):
group = {}
for k, v in x.set_index(x.columns[0]).T.to_dict('l').items():
group[k] = dict(zip(groups[k], v))
header = dict(zip(header_names, df.columns))
trailer = dict(zip(trailer_names, df.iloc[-1]))
file = {'header': header, 'groups': group, 'trailer': trailer}
print(file)
header_names = ["Header", "HeaderKey1", "HeaderKey2", "HeaderKey3"]
trailer_names = ["Footer", "Footer1", "Footer2", "Footer3"]
groups = {'A': ['AValueKey', 'A2ValueKey', 'A3ValueKey'],
'B': ['BValueKey', 'B2ValueKey', 'B3ValueKey']}
first_group_name = 'A'
df = pd.read_csv('file1.usr', sep='|')
header_names = ["HeaderKey", "HeaderKey1", "HeaderKey2", "HeaderKey3"]
footer_names = ["FooterKey", "FooterKey1", "FooterKey2", "FooterKey3"]
groups = {'A': ['AValueKey', 'A2ValueKey', 'A3ValueKey'],
'B': ['BValueKey', 'B2ValueKey', 'B3ValueKey']}
first_group_name = 'A'
df1 = df.iloc[:-1]
s = df1.iloc[:, 0].eq(first_group_name).cumsum()
for i, x in df1.groupby(s):
group = {}
for k, v in x.set_index(x.columns[0]).T.to_dict('l').items():
group[k] = dict(zip(groups[k], v))
header = dict(zip(header_names, df.columns))
footer= dict(zip(footer_names, df.iloc[-1]))
file = {'header': header, 'groups': group, 'footer': footer}
print(file)
header_names = ["HeaderKey", "HeaderKey1", "HeaderKey2", "HeaderKey3"]
trailer_names = ["FooterKey", "FooterKey1", "FooterKey2", "FooterKey3"]
groups = {'A': ['AValueKey', 'A2ValueKey', 'A3ValueKey'],
'B': ['BValueKey', 'B2ValueKey', 'B3ValueKey']}
first_group_name = 'A'
Header1|Header2|Header3Header|Header1|Header2|Header3
Entry1|Entry2|Entry3A|Entry1|Entry2|Entry3
Trailer1|Trailer2|Trailer3B|Entry1|Entry2|Entry3
Footer|Footer1|Footer2|Footer3
Header1|Header2|Header3Header|Header1|Header2|Header3
Group1|Entry1|Entry2A|Entry1|Entry2|Entry3
Group2|Entry1|Entry2B|Entry1|Entry2|Entry3
Group1|Entry1|Entry2A|Entry1|Entry2|Entry3
Group2|Entry1|Entry2B|Entry1|Entry2|Entry3
Trailer1|Trailer2|Trailer3Footer|Footer1|Footer2|Footer3
Header1|Header2|Header3Header|Header1|Header2|Header3
A|Entry1|Entry2A|Entry1|Entry2|Entry3
B|Entry1|Entry2B|Entry1|Entry2|Entry3
Trailer1|Trailer2|Trailer3Footer|Footer1|Footer2|Footer3
Header|Header1|Header2|Header3
A|Entry1|Entry2|Entry3
B|Entry1|Entry2|Entry3
Trailer|Trailer1|Trailer2|Trailer3A|Entry1|Entry2|Entry3
B|Entry1|Entry2|Entry3
Footer|Footer1|Footer2|Footer3
df = pd.read_csv('file1.usr', sep='|')
header_names = ["Header"["HeaderKey", "HeaderKey1", "HeaderKey2", "HeaderKey3"]
trailer_names = ["Trailer"["FooterKey", "TailKey1""FooterKey1", "TailKey2""FooterKey2", "TailKey3"]"FooterKey3"]
groups = {'A': ['AValueKey', 'A2ValueKey', 'A3ValueKey'],
'B': ['BValueKey', 'B2ValueKey', 'B3ValueKey']}
first_group_name = 'A'
df1 = df.iloc[:-1]
s = df1.iloc[:, 0].eq(first_group_name).cumsum()
for i, x in df1.groupby(s):
group = {}
for k, v in x.set_index(x.columns[0]).T.to_dict('l').items():
group[k] = dict(zip(groups[k], v))
header = dict(zip(header_names, df.columns))
trailer = dict(zip(trailer_names, df.iloc[-1]))
file = {'header': header, 'groups': group, 'trailer': trailer}
print(file)
{
'groups': {
'A': {
'AValueKey': 'Entry1', 'A2ValueKey': 'Entry2', 'A3ValueKey': 'Entry3'
},
'B': {
'BValueKey': 'Entry1', 'B2ValueKey': 'Entry2', 'B3ValueKey': 'Entry3'}
},
'header': {
'HeaderKey': 'Header'
'HeaderKey1': 'Header1',
'HeaderKey2': 'Header2',
'HeaderKey3': 'Header3',
},
'trailer''footers': {
'TailKey1''FooterKey': 'Trailer1''Footer',
'TailKey2''FooterKey1': 'Trailer2''Footer1',
'TailKey3''FooterKey2': 'Trailer3''Footer2',
'FooterKey3': 'Footer3',
}
}
header_names = ["HeaderKey1"["Header", "HeaderKey1", "HeaderKey2", "HeaderKey3"]
trailer_names = ["TailKey1"["Footer", "TailKey2""Footer1", "TailKey3"]"Footer2", "Footer3"]
groups = {'A': ['AValueKey', 'A2ValueKey', 'A3ValueKey'],
'B': ['BValueKey', 'B2ValueKey', 'B3ValueKey']}
first_group_name = 'A'
Header1|Header2|Header3
Entry1|Entry2|Entry3
Trailer1|Trailer2|Trailer3
Header1|Header2|Header3
Group1|Entry1|Entry2
Group2|Entry1|Entry2
Group1|Entry1|Entry2
Group2|Entry1|Entry2
Trailer1|Trailer2|Trailer3
Header1|Header2|Header3
A|Entry1|Entry2
B|Entry1|Entry2
Trailer1|Trailer2|Trailer3
Header|Header1|Header2|Header3
A|Entry1|Entry2|Entry3
B|Entry1|Entry2|Entry3
Trailer|Trailer1|Trailer2|Trailer3
df = pd.read_csv('file1.usr', sep='|')
header_names = ["Header", "HeaderKey1", "HeaderKey2", "HeaderKey3"]
trailer_names = ["Trailer", "TailKey1", "TailKey2", "TailKey3"]
groups = {'A': ['AValueKey', 'A2ValueKey', 'A3ValueKey'],
'B': ['BValueKey', 'B2ValueKey', 'B3ValueKey']}
first_group_name = 'A'
df1 = df.iloc[:-1]
s = df1.iloc[:, 0].eq(first_group_name).cumsum()
for i, x in df1.groupby(s):
group = {}
for k, v in x.set_index(x.columns[0]).T.to_dict('l').items():
group[k] = dict(zip(groups[k], v))
header = dict(zip(header_names, df.columns))
trailer = dict(zip(trailer_names, df.iloc[-1]))
file = {'header': header, 'groups': group, 'trailer': trailer}
print(file)
{
'groups': {
'A': {
'AValueKey': 'Entry1', 'A2ValueKey': 'Entry2', 'A3ValueKey': 'Entry3'
},
'B': {
'BValueKey': 'Entry1', 'B2ValueKey': 'Entry2', 'B3ValueKey': 'Entry3'}
},
'header': {
'HeaderKey1': 'Header1',
'HeaderKey2': 'Header2',
'HeaderKey3': 'Header3',
},
'trailer': {
'TailKey1': 'Trailer1',
'TailKey2': 'Trailer2',
'TailKey3': 'Trailer3',
}
}
header_names = ["HeaderKey1", "HeaderKey2", "HeaderKey3"]
trailer_names = ["TailKey1", "TailKey2", "TailKey3"]
groups = {'A': ['AValueKey', 'A2ValueKey', 'A3ValueKey'],
'B': ['BValueKey', 'B2ValueKey', 'B3ValueKey']}
first_group_name = 'A'
Header|Header1|Header2|Header3
A|Entry1|Entry2|Entry3
B|Entry1|Entry2|Entry3
Footer|Footer1|Footer2|Footer3
Header|Header1|Header2|Header3
A|Entry1|Entry2|Entry3
B|Entry1|Entry2|Entry3
A|Entry1|Entry2|Entry3
B|Entry1|Entry2|Entry3
Footer|Footer1|Footer2|Footer3
Header|Header1|Header2|Header3
A|Entry1|Entry2|Entry3
B|Entry1|Entry2|Entry3
Footer|Footer1|Footer2|Footer3
Header|Header1|Header2|Header3
A|Entry1|Entry2|Entry3
B|Entry1|Entry2|Entry3
A|Entry1|Entry2|Entry3
B|Entry1|Entry2|Entry3
Footer|Footer1|Footer2|Footer3
df = pd.read_csv('file1.usr', sep='|')
header_names = ["HeaderKey", "HeaderKey1", "HeaderKey2", "HeaderKey3"]
trailer_names = ["FooterKey", "FooterKey1", "FooterKey2", "FooterKey3"]
groups = {'A': ['AValueKey', 'A2ValueKey', 'A3ValueKey'],
'B': ['BValueKey', 'B2ValueKey', 'B3ValueKey']}
first_group_name = 'A'
df1 = df.iloc[:-1]
s = df1.iloc[:, 0].eq(first_group_name).cumsum()
for i, x in df1.groupby(s):
group = {}
for k, v in x.set_index(x.columns[0]).T.to_dict('l').items():
group[k] = dict(zip(groups[k], v))
header = dict(zip(header_names, df.columns))
trailer = dict(zip(trailer_names, df.iloc[-1]))
file = {'header': header, 'groups': group, 'trailer': trailer}
print(file)
{
'groups': {
'A': {
'AValueKey': 'Entry1', 'A2ValueKey': 'Entry2', 'A3ValueKey': 'Entry3'
},
'B': {
'BValueKey': 'Entry1', 'B2ValueKey': 'Entry2', 'B3ValueKey': 'Entry3'}
},
'header': {
'HeaderKey': 'Header'
'HeaderKey1': 'Header1',
'HeaderKey2': 'Header2',
'HeaderKey3': 'Header3',
},
'footers': {
'FooterKey': 'Footer',
'FooterKey1': 'Footer1',
'FooterKey2': 'Footer2',
'FooterKey3': 'Footer3',
}
}
header_names = ["Header", "HeaderKey1", "HeaderKey2", "HeaderKey3"]
trailer_names = ["Footer", "Footer1", "Footer2", "Footer3"]
groups = {'A': ['AValueKey', 'A2ValueKey', 'A3ValueKey'],
'B': ['BValueKey', 'B2ValueKey', 'B3ValueKey']}
first_group_name = 'A'
lang-py