程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Format HTML output of a Pandas dataframe based on row and column?

发布于2023-02-05 16:17     阅读(637)     评论(0)     点赞(5)     收藏(0)


I have the following code which outputs an HTML table:

import pandas as pd

df = pd.DataFrame({
    'Color': ['Red', 'Red', 'Yellow', 'Yellow'],
    'Fruit': ['Apple', 'Strawberry', 'Banana', 'Peach'],
    'Weight': [5, 3, 8, 6]
})

df = pd.pivot(df, index='Color', columns='Fruit', values='Weight')

print(df.to_html())

I would like the output of each cell to reference its row (index) and column value. For example, I'd like a format function that looks like this:

def format_value(val, row, col):
    return f"<a href=/{row}/{col}>{val}</a>"

However, I cannot figure out how to do this. This is what I've tried:

df.applymap()

df = df.applymap(lambda x: format_value(x, row=x.index, col=x.name))

This returns an error:

AttributeError: 'float' object has no attribute 'index'

to_html(formatter=...)

def format_cell(val, col, row):

    def f(val):
      return f"/{row}/{col}"
            
    return f

format_map = {}
for col in df.columns:
    format_map[col] = format_cell(col, df.index)

print(df.to_html(formatter=format_map))

However, df.index returns all of the indexes, so there is no way to know which row specifically the formatter is referring to.

How can I create an HTML formatter which is aware of both the index and column for each value?


解决方案


暂无回答



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/1895747/ed2ee614dd55de4cf898/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

5 0
收藏该文
已收藏

评论内容:(最多支持255个字符)