Я хочу записать содержимое кадра данных pandas в текстовый файл. Это образец фрейма данных, с которым я работаю:
last_week = pd.date_range(start=(datetime.today() - timedelta(weeks=1)), end=datetime.today()).map(lambda x: x.strftime('%Y-%m-%d'))
df = pd.DataFrame(index=pd.MultiIndex.from_product([list(last_week), ['A', 'B', 'C']]),
data={'Category 1':np.random.randint(100, size=24),
'Category 2':np.random.randint(100, size=24)})
df.index = df.index.set_levels([pd.to_datetime(df.index.levels[0], format='%Y-%m-%d'), df.index.levels[1]])
df.index.set_names(['Day', 'App Name'], level=[0,1], inplace=True)
Я написал функцию, которая выводит содержимое фрейма данных в нужном мне формате:
def write_to_file():
for n in df.reset_index().index:
row = df.reset_index().iloc[n]
row = row[row.notnull()]
print(f"""
\tDay: {datetime.strftime(row.loc['Day'], '%Y-%m-%d')}
\tApp: {row.loc['App Name']}""")
for i in row.index[2:]:
print(f"\t{i}: {round(row.loc[i], 2)}")
Когда я вызываю эту функцию, она выводит следующее:
Day: 2020-02-13
App: A
Category 1: 6
Category 2: 73
Day: 2020-02-13
App: B
Category 1: 39
Category 2: 41
Day: 2020-02-13
App: C
Category 1: 15
Category 2: 15
Day: 2020-02-14
App: A
Category 1: 26
Category 2: 8
Day: 2020-02-14
App: B
Category 1: 72
Category 2: 8
Day: 2020-02-14
App: C
Category 1: 62
Category 2: 32
Day: 2020-02-15
App: A
Category 1: 76
Category 2: 21
Day: 2020-02-15
App: B
Category 1: 35
Category 2: 19
Однако, когда я пытаюсь записать вывод функции в файл...
with open('./filepath', 'w') as f:
f.write(write_to_file())
это не работает, потому что вывод функции - Nonetype. Может ли кто-нибудь предложить способ записи этого вывода в файл?
Спасибо!