Py를
안녕, 나 또한 보고서를 준비하는 일부 팬더 DataFrame .PDF로 인쇄 할 필요가있어
. 나는 ReportLab을 df로 직접 시도하고 "AttributeError : 'DataFrame'객체에 'split'속성이 없습니다." 나는 df.values ()로 시도하고 "TypeError : 'numpy.ndarray'객체를 호출 할 수 없습니다."
언제 STR (DF) 시도하고 나는 .PDF에서 어떤 결과가 ... :-) 코드는 보이는했다 .PDF 보고서를 구축하기 위해 아이디어를 종료에 가까운 같은 :
import pandas as pd
from reportlab.pdfgen import canvas
PATH_OUT = "C:\\"
def pdf_df(c, testo, x, y):
c.drawAlignedString(x,y, testo)
df = pd.DataFrame({'a':[3,4,5], 'b':[6,7,6],'c':[9,10,11]})
print df, type(df)
print''
df1 = (df['a'].groupby([df['b'], df['a']])).sum()
print df1, type(df1)
print ''
c = canvas.Canvas(PATH_OUT + 'out.pdf')
pdf_df (c, str(df), 300, 500)
pdf_df (c, str(df1), 300, 480)
c.showPage()
c.save()
무엇 너 생각하니? 이게 합리적일까요? 아니면 더 똑똑한 방법이 있을까요?
이것은 매우 효과적이지 않은 것으로 보이고 처음에는 ReportLab에서 가져 오기를 기대했습니다. 그것은 ... 내가 .. 라인을 래핑하는 다음 몇 가지 방법이 필요 것과 크기가 변경됩니다
파비오
보인다
===== 지금 아래 솔루션의 많은 행복 해요
, 나는 위의 것에 대해서도 행복하지 않았다.
이것은 ReportLab 그리드를 기반으로하며 목록에서 작동합니다. 그래서 코드가 DF 다음 여기에
:-) ReportLab 그리드로 취급되는 목록으로 변환되어 그것이 :
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import *
from reportlab.lib import colors
import pandas as pd
import random
PATH_OUT = "C:\\"
elements = []
styles = getSampleStyleSheet()
doc = SimpleDocTemplate(PATH_OUT + 'Report_File.pdf')
elements.append(Paragraph("Report Title", styles['Title']))
data = [[random.random() for i in range(1,4)] for j in range (1,8)]
df = pd.DataFrame (data)
lista = [df.columns[:,].values.astype(str).tolist()] + df.values.tolist()
ts = [('ALIGN', (1,1), (-1,-1), 'CENTER'),
('LINEABOVE', (0,0), (-1,0), 1, colors.purple),
('LINEBELOW', (0,0), (-1,0), 1, colors.purple),
('FONT', (0,0), (-1,0), 'Times-Bold'),
('LINEABOVE', (0,-1), (-1,-1), 1, colors.purple),
('LINEBELOW', (0,-1), (-1,-1), 0.5, colors.purple, 1, None, None, 4,1),
('LINEBELOW', (0,-1), (-1,-1), 1, colors.red),
('FONT', (0,-1), (-1,-1), 'Times-Bold'),
('BACKGROUND',(1,1),(-2,-2),colors.green),
('TEXTCOLOR',(0,0),(1,-1),colors.red)]
table = Table(lista, style=ts)
elements.append(table)
doc.build(elements)
나는 다른 가능한 솔루션에 대해 읽어 정말 관심이 있어요 ..
안녕, Fabio.
문제는 pivot_table과 아무 관련이 없습니까? 하지만 그것은 Table 클래스입니다. 그게 뭐죠? 이 동작을 나타내는 DataFrame의 간단한 예제를 제공 할 수 있습니까 ('df = pdf.DataFrame ([[1, 2], [3, 4]))')?) –
죄송합니다. pivot_table보다는 DataFrame입니다. 귀하의 예를 들어 작동하지 않습니다. –
아마도이 예제를 대신 사용하는 것이 좋습니다 (오류를 다시 만들면 도움이 될 것입니다). 무엇이'pivot_cols' 및'column_order' 변수입니까? –