python - Pandas:获取由 pandas.DataFrame.update 更新的单元格
问题描述
我正在使用pandas.DataFrame.update
合并两个数据框,例如
import pandas as pd
df1 = pd.DataFrame(
{'ID': [101, 102, 103],
'A': ['..', '..', '..'],
'B': ['..', '..', '..'],
}).set_index('ID')
df2 = pd.DataFrame(
{'ID': [101, 102, 223],
'A': ['..', '..', '..'],
'B': ['..', 'XY', '..'],
}).set_index('ID')
df1.update(df2)
如何获取单元格(在本例中为 ID 102 的 B 列)例如应用一些格式?我的目标是用黄色背景标记所有已更新的单元格。
谢谢你的支持。
解决方案
想法是将原始df11
DataFrame 与自定义函数中的更新进行比较并传递给Styler.apply
:
df1 = pd.DataFrame(
{'ID': [101, 102, 103],
'A': ['..', '..', '..'],
'B': ['..', '..', '..'],
}).set_index('ID')
df2 = pd.DataFrame(
{'ID': [101, 102, 223],
'A': ['..', '..', '..'],
'B': ['..', 'XY', '..'],
}).set_index('ID')
df11 = df1.reset_index().copy()
df1.update(df2)
def highlight(x):
c1 = 'background-color: yellow'
df3 = pd.DataFrame('', index=x.index, columns=x.columns)
df3 = df3.mask(df11.ne(x), c1)
return df3
df1.reset_index().style.apply(highlight, axis=None).to_excel('file.xlsx', index=False)
推荐阅读
- javascript - 错误类型错误:无法读取 null 的属性“样式”
- spring - com.mongodb.MongoSocketOpenException:使用 Spring Boot 和 mongodb 云打开异常套接字
- python - 如何在句子中找到每个单词可能被 n 个其他单词分隔的单词列表
- database - 在我的 odbc 驱动程序(3.5)中实现了 SQLExtendedFetch 函数,但是 odbc 驱动程序管理器仍然说驱动程序不支持这个函数
- python - Websocket:使用 Dart 客户端和 Autobahn-python 服务器
- javascript - 使用 reactjs 将 api 数据显示到前端(轮询)
- ios - 计算 CGRect 上的新大小和位置
- angular - Angular如何全局/应用范围模板
- sql - SQL 计算总和子总数但唯一
- php - Gettext - PHP - WSL Ubuntu系统中的语言环境具有完整的代码,而浏览器具有较短的代码