Панды, как добавить детали в CSV, прежде чем писать фрейм данных

1

Мне нужно записать в файл csv, в котором есть 3-5 строк (строк) подробностей о файле, после чего три строки пустых строк, прежде чем я могу добавить к фрейму данных.

Вот как выглядит файл. (Примечание: строки, содержащие "#", являются комментариями к демонстрации)

some details
some more details
some details that were not covered in last two details
#blankline1
#blankline2
#blankline3
A1;B;C  #headers
1231;1241;abc
1232;1242;abd
1233;1243;abe
1234;1244;abf
.
.
.

Вот что я пробовал до сих пор:

import pandas as pd

file_name = 'my_csv_file.csv'

df1 = pd.Dataframe({"some details":})
df2 = pd.DataFrame({"some more details":})
df3 = pd.DataFrame({"some details that were not covered in last two details'})
df4 = pd.DataFrame({"\n\n\n\":}) #write 3 blank lines
df5 = pd.DataFrame({"A":[1231 1232 1233 1234]
                    "B":[1241 1242 1243 1244]
                   "headers":[abc abd abe abf] }

df1.to_csv(file_name, sep=';', mode='a', index=False)
df2.to_csv(file_name, sep=';', mode='a', index=False)
df3.to_csv(file_name, sep=';', mode='a', index=False)
df4.to_csv(file_name, sep=';', mode='a', index=False)
df5.to_csv(file_name, sep=';', mode='a', index=False)

но это, похоже, не работает. Кто-нибудь может мне с этим помочь?

Теги:
pandas
export-to-csv

1 ответ

1
Лучший ответ

Вы можете использовать шаблон строки и оставить {} чтобы вставить данные. Все это становится более читаемым. Полезные вещи: 1) Используйте """ для многострочных строк и 2) Используйте комментарии, чтобы помнить, почему вы что-то делаете.

import pandas as pd

df = pd.DataFrame({
    "A": [1231, 1232, 1233, 1234],
    "B": [1241, 1242, 1243, 1244],
    "C": ['abc', 'abd', 'abe', 'abf']
})

# Setups the template that the client requested with 3-5 rows of information 
# Followed by 3 blank rows and the dataframe
template = """\
some details
some more details
some details that were not covered in last two details



{}"""

with open('test.txt', 'w') as fp:
    fp.write(template.format(df.to_csv(index=False)))

test.csv:

some details
some more details
some details that were not covered in last two details


A,B,C
1231,1241,abc
1232,1242,abd
1233,1243,abe
1234,1244,abf

Примечание: Данные пользователя Taras

Ещё вопросы

Сообщество Overcoder
Наверх
Меню