Как отобразить новую пару ключ-значение в панде Dataframe - PullRequest
0 голосов
/ 24 марта 2020

Мне нужно создать лист Excel на основе записей MySQL. Но прежде чем записать их в 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()

1 Ответ

1 голос
/ 24 марта 2020

Это редактирование кода может заставить его работать -

import numpy as np
df = pd.DataFrame(SQL_Query, columns=['id','desp','amount'])
df['status'] = np.where(df['amount'].astype(float) >= 1000, 'OK', 'NOTOK')

Для цветового кодирования ячейки (Ссылка: Форматировать цвет ячейки в кадре данных pandas в соответствии с несколькими условиями ) -

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. Не уверен, если это то, что вы искали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...