根据他人的答案,这是我编写的代码片段,不是编码和性能最佳的:
import pandas as pd
import pickle
import numpy as np
from tabulate import tabulate
left_align_gen = lambda length, value: eval(r"'{:<<<length>>}'.format('''<<value>>'''[0:<<length>>])".replace('<<length>>', str(length)).replace('<<value>>', str(value)))
right_align_gen = lambda length, value: eval(r"'{:><<length>>}'.format('''<<value>>'''[0:<<length>>])".replace('<<length>>', str(length)).replace('<<value>>', str(value)))
with open("df.pkl", 'rb') as f:
df = pickle.load(f)
widths=(22, 255, 14, 255, 14, 255, 255, 255, 255, 255, 255, 22, 255, 22, 255, 255, 255, 22, 14, 14, 255, 255, 255, 2, )
df['CREATED_DATE'] = df['CREATED_DATE'].apply(lambda x: x.to_pydatetime().strftime('%Y%m%d%H%M%S'))
df['LAST_MODIFIED_DATE'] = df['LAST_MODIFIED_DATE'].apply(lambda x: x.to_pydatetime().strftime('%Y%m%d%H%M%S'))
df['TERMS_ACCEPTED_DATE'] = df['TERMS_ACCEPTED_DATE'].apply(lambda x: x.to_pydatetime().strftime('%Y%m%d%H%M%S'))
df['PRIVACY_ACCEPTED_DATE'] = df['PRIVACY_ACCEPTED_DATE'].apply(lambda x: x.to_pydatetime().strftime('%Y%m%d%H%M%S'))
record_line_list = []
for row in [tuple(x) for x in df.to_records(index=False)]:
record_line_list.append("".join(left_align_gen(length, value) for length, value in zip(widths, row)))
with open('output.txt', 'w') as f:
f.write('\n'.join(record_line_list))
Github要点
to_string
方法,看看它是否可以实现你想要的功能。 - zachdf.to_csv()
方法会导致错误TypeError: delimiter must be set
。 - pbreach