python - 如何在 panda Dataframe 中映射新的键值对
问题描述
我需要根据 MySQL 的记录生成一个 excel 表。但在将它们写入 excel 之前,我想通过检查数量 > 10000 的条件在数据框中添加新的键值。不幸的是,状态始终在数据框中显示 Ok 状态。即使条件运行良好,它也没有反映在数据框中。一些想法或提示真的很感激。
import mysql.connector
import pandas as pd
import numpy as np
import sys
conn = mysql.connector.connect(host='localhost',
database='db_name',
user='sammy',
password='password')
def apply_color(x):
if x < 10000:
color = 'red'
else:
color = 'white'
return 'background-color: %s' %color
if conn.is_connected():
writer = pd.ExcelWriter('demo.xlsx', engine='xlsxwriter')
writer.save()
SQL_Query=pd.read_sql_query('''select * from demo_table''', conn)
df = pd.DataFrame(SQL_Query, columns=['id','desp','amount'])
df['status'] = np.where(df['amount'].astype(float) >= 10000, 'OK', 'NOTOKS')
df.style.applymap(apply_color, subset=['status'])
writer = pd.ExcelWriter('demo.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', index=False)
writer.save()
解决方案
对代码的这种编辑可能会使其工作 -
import numpy as np
df = pd.DataFrame(SQL_Query, columns=['id','desp','amount'])
df['status'] = np.where(df['amount'].astype(float) >= 1000, 'OK', 'NOTOK')
对于单元格的颜色编码(参考:根据多个条件格式化熊猫数据框中单元格的颜色)-
def apply_color(x):
if x < 10000:
color = 'red'
else:
color = 'white'
return 'background-color: %s' %color
df.style.applymap(apply_color, subset=['status'])
我能够在jupyter
笔记本中使用上述颜色编码。不确定,如果这是您要寻找的。
推荐阅读
- sql-server - SET DATEFIST = 1 无法正常工作
- delphi - 带有 Rad Studio 10.2 的 Nox 模拟器
- sql-server - 连接到 SQL Server 需要使用显式凭据启动 CMD
- date - 有没有办法在不使用 OS 库的情况下访问 Lua 中的本地日期/时间?
- php - Cors 不能在 heroku 上的 apache 中工作
- android - 如何实现从片段到另一个活动的共享元素转换
- python - 如何在 macOS 上删除或卸载 tensorflow1.1 或 1.8
- c# - 如何将从服务器生成的 xml 文件转储到随机客户端,但我必须将该文件阻尼到客户端的特定文件夹中
- python - Python:使用 Defaultdict 作为递归默认键的 Defaultdict
- linux - 使用文件观察器解压缩文件的 Shell 脚本