Reputation: 2751
I am trying to apply a tab as a separator to the dataframe before saving, but something wonky is happening with the Day of Week column? Any ideas? Is there an easier approach using some type of fixed-width columns instead? Thanks!
entries = [{test_columns[index][0]:column for index, column in enumerate(value)} for value in test_cursor.fetchall()]
results = pd.DataFrame(entries)
results = results[['Test','Day of Week','Test Date','Number']]
results.to_csv('file.txt', sep='\t', index=False, header=False)
Current Output:
VERSCH Tuesday 07/05/2016 3333333333
VERSCH Tuesday 07/05/2016 3333333333
VERSCH Tuesday 07/05/2016 3333333333
VERSCH Wednesday 07/06/2016 3333333333
VERSCH Wednesday 07/06/2016 3333333333
VERSCH Wednesday 07/06/2016 3333333333
VERSCH Thursday 07/07/2016 3333333333
VERSCH Thursday 07/07/2016 3333333333
VERSCH Thursday 07/07/2016 3333333333
VERSCH Thursday 07/07/2016 3333333333
VERSCH Friday 07/08/2016 3333333333
VERSCH Friday 07/08/2016 3333333333
VERSCH Monday 07/11/2016 3333333333
VERSCH Monday 07/11/2016 3333333333
VERSCH Monday 07/11/2016 3333333333
Desired Output:
VERSCH Tuesday 07/05/2016 3333333333
VERSCH Tuesday 07/05/2016 3333333333
VERSCH Tuesday 07/05/2016 3333333333
VERSCH Wednesday 07/06/2016 3333333333
VERSCH Wednesday 07/06/2016 3333333333
VERSCH Wednesday 07/06/2016 3333333333
VERSCH Thursday 07/07/2016 3333333333
VERSCH Thursday 07/07/2016 3333333333
VERSCH Thursday 07/07/2016 3333333333
VERSCH Thursday 07/07/2016 3333333333
VERSCH Friday 07/08/2016 3333333333
VERSCH Friday 07/08/2016 3333333333
VERSCH Monday 07/11/2016 3333333333
VERSCH Monday 07/11/2016 3333333333
VERSCH Monday 07/11/2016 3333333333
Upvotes: 2
Views: 810
Reputation: 294318
Apply a string formatter:
str_fmt = "{Test:<10s} {Day of Week:<10s} {Test Date:>10s} {Number:>10s}"
print results \
.apply(lambda x: str_fmt.format(**x.to_dict()), axis=1) \
.to_frame().to_csv(header=None, index=None)
VERSCH Tuesday 07/05/2016 3333333333
VERSCH Tuesday 07/05/2016 3333333333
VERSCH Tuesday 07/05/2016 3333333333
VERSCH Wednesday 07/06/2016 3333333333
VERSCH Wednesday 07/06/2016 3333333333
VERSCH Wednesday 07/06/2016 3333333333
VERSCH Thursday 07/07/2016 3333333333
VERSCH Thursday 07/07/2016 3333333333
VERSCH Thursday 07/07/2016 3333333333
VERSCH Thursday 07/07/2016 3333333333
VERSCH Friday 07/08/2016 3333333333
VERSCH Friday 07/08/2016 3333333333
VERSCH Monday 07/11/2016 3333333333
VERSCH Monday 07/11/2016 3333333333
VERSCH Monday 07/11/2016 3333333333
Upvotes: 0
Reputation: 25639
Try this:
df["Day"] = df["Day"].str.pad(10, side='left', fillchar=' ')
print df["Day"].head()
0 Tuesday
1 Tuesday
2 Tuesday
3 Wednesday
4 Wednesday
Name: Day, dtype: object
print df
Test Day Test.1 Number
0 VERSCH Tuesday 07/05/2016 3333333333
1 VERSCH Tuesday 07/05/2016 3333333333
2 VERSCH Tuesday 07/05/2016 3333333333
3 VERSCH Wednesday 07/06/2016 3333333333
4 VERSCH Wednesday 07/06/2016 3333333333
5 VERSCH Wednesday 07/06/2016 3333333333
6 VERSCH Thursday 07/07/2016 3333333333
7 VERSCH Thursday 07/07/2016 3333333333
8 VERSCH Thursday 07/07/2016 3333333333
9 VERSCH Thursday 07/07/2016 3333333333
10 VERSCH Friday 07/08/2016 3333333333
11 VERSCH Friday 07/08/2016 3333333333
12 VERSCH Monday 07/11/2016 3333333333
13 VERSCH Monday 07/11/2016 3333333333
14 VERSCH Monday 07/11/2016 3333333333
Upvotes: 2