2016-11-14 2 views
2

Я работаю над созданием отчета, сгенерированного Python, который использует Pandas DataFrames. В настоящее время я использую метод DataFrame.to_string(). Однако это записывает файл в виде строки. Есть ли способ для достижения этого, сохраняя его как таблицу, чтобы я мог использовать формирование таблицы.Запись документа Pandas Python DataFrame в Word

Код:

SEMorgkeys = client.domain_organic(url, database = "us", display_limit = 10, export_columns=["Ph,Pp,Pd,Nq,Cp,Ur,Tr"]) 
org_df = pd.DataFrame(SEMorgkeys) 

f = open(name, 'w') 
f.write("\nOrganic:\n") 
f.write(org_df.to_string(index=False,justify="left")) 
f.close() 

Текущий Распечатка (как строка):

CPC Keyword      Position Difference Previous Position Search Volume Traffic (%) Url            
75.92  small business factoring 0     1     210   11.69  https://www..com/small-business-f... 
80.19    factoring company 0     8    1600   5.72  https://www..com/factoring-vs-ban... 
+0

Это может быть проще записать данные в формате CSV, а затем копировать/вставить или импортировать таблицу из Excel в Слово –

+0

Для одной таблицы да я согласен. Тем не менее, я просматриваю около десятка URL-адресов, содержащих около 6 DataFrames за цикл. Я бы предпочел не создавать CSV для 72 таблиц. – spriore

+0

Не могли бы вы добавить дополнительную информацию. Вы пытаетесь написать файл данных в виде форматированной таблицы в MSWord или просто добавить строки текста в формате, отформатированном с помощью метода '.to_string'? – James

ответ

6

Вы можете написать таблицу прямо в .docx файл с помощью python-docx библиотеки.

Если вы используете Конда или установленный Python с помощью Anaconda, вы можете запустить команду из командной строки:

conda install python-docx --channel conda-forge 

Или пункт установить из командной строки:

pip install python-docx 

После который установлен, мы можем использовать его, чтобы открыть файл, добавить таблицу, а затем заполнить текст ячейки таблицы данными данных данных.

import docx 
import pandas as pd 

# i am not sure how you are getting your data, but you said it is a 
# pandas data frame 
df = pd.DataFrame(data) 

# open an existing document 
doc = docx.Document('./test.docx') 

# add a table to the end and create a reference variable 
# extra row is so we can add the header row 
t = doc.add_table(df.shape[0]+1, df.shape[1]) 

# add the header rows. 
for j in range(df.shape[-1]): 
    t.cell(0,j).text = df.columns[j] 

# add the rest of the data frame 
for i in range(df.shape[0]): 
    for j in range(df.shape[-1]): 
     t.cell(i+1,j).text = str(df.values[i,j]) 

# save the doc 
doc.save('./test.docx') 
+0

Что такое 'data' в' df = pd.DataFrame (data) ' – pyd

+0

@pyd' data' - это источник данных (что когда-либо было вашим вводом) для вашего 'DataFrame' – spriore

+0

Есть ли способ добавить границы вокруг Таблица? Код работает, но я думаю, что мой отчет будет выглядеть лучше с границами моего Pandas Dataframe, который написан на моем документе. Благодаря! :) – HenryHub

Смежные вопросы