使用Python将分裂的数据框以HTML代码的形式显示在一个页面上

4

我是一名HTML/CSS的新手,对于以HTML格式显示数据有些疑问。我有一个长列表,想要将其分割并以HTML格式显示为两列。例如,不是:

Col1 Col2
1     a
2     a
3     a
4     a
5     b
6     b
7     b
8     b

I want to see text as

Col1 Col2   Col1   Col2
1     a      5       b
2     a      6       b 
3     a      7       b
4     a      8       b

如何编写HTML/CSS代码以在拆分表格中显示上述数据?

对于第一个输出,将所有数据在一个表格中的2列中查看,我使用Python代码:

start = '''<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta></head> '''
font_size = '14pt'


style = '''<style media="screen" type="text/css">
table.table1 {

  border-collapse: collapse;
  width: 20%;
  font-size: '''+font_size+''';

}

td {

  text-align: left;
  border: 1px solid #ccc;
}
th {

  text-align: left;
  border: 1px solid #ccc;
  background-color: #072FB1;
}
</style>
'''

title = '''<div align="center"></br><font size = "24"><strong>'''+title+'''</strong></font></br></br></</div>'''

df_data1 = df_data[1:10]
data = df_data1.to_html( index = False, na_rep ='' )
data = data.replace('None', '')

style_headers = 'background-color: #072FB1; color: #ffffff;'
style_status_new ='background-color: #587EF8; color: #ffffff;font-weight:bold'

style_first_col = 'font-weight:bold;'

total = 'TOTAL'
soup = bs4.BeautifulSoup(data)
soup.thead.tr.attrs['style'] = style_headers

html = start+lentos+style+'''<body bgcolor="#FFFFFF">'''+title+time+unicode.join(u'\n',map(unicode,soup))+finish 

try:
    with open(dir_files+'engines_tv_html.html', 'w') as file:
        file.write(html.encode('UTF-8'))
except Exception, e:
    log_error()

我正在将数据分割为不同的 data_frame,代码如下:df_data[1:10]。现在的问题是如何在一个 html 页面中同时展示分割后的两个 data_frame(左右两个表格)。


你能展示一下 df_data 是如何定义的吗? - Anand S Kumar
con = pyodbc.connect('DRIVER={SQL Server};Server=SQL;Database=AA;UID=user;PWD=pswd) df_data = pd.io.sql.read_frame(sql_data, con) 连接 = pyodbc.connect('DRIVER={SQL Server};Server=SQL;Database=AA;UID=user;PWD=pswd) 数据帧 = pd.io.sql.read_frame(sql_data, 连接) - orangutangas
2个回答

1

由于您的数据是由 pandas.DataFrame 管理的,我建议您尝试使用 pandas 构建表格。

pd.merge(left=df_data[0:4], left_index=True,
         right=df_data[4:8].reset_index(drop=True), right_index=True,
         suffixes=['_left','_right'], how='outer')

   Col1_left Col2_left  Col1_right Col2_right
0          1         a           5          b
1          2         a           6          b
2          3         a           7          b
3          4         a           8          b

谢谢,但是答案并没有解决我的问题。当我们不知道确切的行数时,这个表格就无法根据数据输出进行调整。例如,如果我们将left=df_data[0:4]和right=df_data[4:8],而实际上只有7条记录而不是8条,那么左侧表格中会有3条记录,右侧表格中也会有3条记录。我希望在左侧表格中看到4条记录,在右侧表格中看到剩下的3条记录。 - orangutangas
@orangutangas 我刚刚添加的 how='outer' 会确保你始终获取到所有行。 - firelynx

0
发现解决方法!当我们从数据框中读取数据时,可以先按所需数量对其进行截断,然后需要删除先前的索引,然后才能将该数据连接起来:
    pirmas_m = df_data[0:30].reset_index(drop=True)
    antras_m = df_data[30:60].reset_index(drop=True)
    trecias_m = df_data[60:90].reset_index(drop=True)
    ketvirtas_m = df_data[90:120].reset_index(drop=True)
    opa = pd.concat(  [pirmas_m, antras_m, trecias_m, ketvirtas_m], axis=1  )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接