À propos des opérateurs de comparaison de chaînes Python

Récemment, j'ai examiné le code qui traite les données en Python et traite par lots des fonctions d'alerte simples.

Parmi eux, j'ai été surpris de trouver le code suivant. (Légèrement réécrit)

import pandas as pd

def select_this_month(df: pd.DataFrame) -> pd.DataFrame:
    """Extraire uniquement les données de ce mois
        Args:
            df:Trame de données à filtrer
        Returns:
Trame de données filtrée
    """
    now = df["Date"].max()
    y, m = now[0:4], now[5:7]
    res = df[df['Date'] >= (y + "-" + m + "-01")]
    return res

Quand je regarde ce code, je récupère la valeur maximale avec pandas `` max '' (type numérique ou type datetime?), Et récupère une sous-chaîne avec une tranche (type de chaîne de caractères?). Je me suis demandé: "Qu'est-ce que c'est? Un type de date intégré aux pandas?"

En y regardant de plus près, il ne s'agissait que d'un type de chaîne avec un opérateur de comparaison (inégalité) défini.

a = '2016-12-31'
b = '2016-01-01'
a > b
# => True
a < b
# => False

J'ai également trouvé où le résultat de l'opérateur de comparaison est spécifié dans la documentation officielle de Python. 。

Strings (instances of str) compare lexicographically using the numerical Unicode code points (the result of the built-in function ord()) of their characters.

Strings and binary sequences cannot be directly compared.

Je vais le traduire sur Google pour le moment.

Les chaînes (instances str) sont comparées lexicographiquement en utilisant des points de code Unicode pour les caractères (résultats de la fonction intégrée ord ()). [3]

Les chaînes et les séquences binaires ne peuvent pas être comparées directement.

Document de la fonction ord dit aussi ceci, il semble donc qu'il soit comparé par point Unicode.

Pour une chaîne qui représente un seul caractère Unicode, renvoie un entier qui représente le point de code Unicode pour ce caractère. Par exemple, ord ('a') renvoie l'entier 97 et ord ('€') (le symbole de l'euro) renvoie 8364. C'est l'opposé de chr ().

Alors

Si tel est le cas, cela semble fonctionner sans problème, même avec un type de chaîne de caractères.

Je pense qu'il vaut mieux utiliser le type de date après tout.

Recommended Posts

À propos des opérateurs de comparaison de chaînes Python
Remarque Python: à propos de la comparaison en utilisant is
Python: combinaison de chaînes
À propos de la notation d'inclusion de python
tranche de chaîne python
À propos de Python tqdm.
À propos du rendement Python
comparaison de chaînes python / utiliser 'list' et 'in' au lieu de '==' et 'ou'
À propos de l'héritage Python
À propos de python, range ()
# 3 [python3] Divers opérateurs
À propos de Python Decorator
Type de chaîne Python2
Format de chaîne Python
Python # type de chaîne
À propos de la référence Python
À propos des décorateurs Python
[Python] À propos du multi-processus
Inversion de chaîne Python
À propos de Python for loop
À propos des arguments de fonction (python)
Manipulation de chaîne en python
[Python] Mémo sur les fonctions
[Python] Assigner une chaîne sur plusieurs lignes
Maître de manipulation de chaînes Python
Résumé sur Python3 + OpenCV3
À propos de Python, pour ~ (plage)
[Python] Mémo sur les erreurs
À propos de l'environnement de développement Python
Python: à propos des arguments de fonction
[Python2] Chaîne de date → UnixTime → Chaîne de date
Génération de chaînes aléatoires (Python)
Python, à propos de la gestion des exceptions
À propos de Python Pyramid Traversal
Comparaison du gestionnaire de packages Python
Python3> chaîne de documentation / docstring
À propos de Python3 ... (objet Ellipsis)
[Python] Chapitre 01-01 À propos de Python (First Python)
[Python] À propos de l'entrée standard
À propos de __all__ en python
Illustration de traitement de chaîne Python
Imbrication d'opérateurs ternaires Python
[Introduction à l'application Udemy Python3 +] 35. Opérateurs de comparaison et opérateurs logiques
Paiza Python Primer 2: Apprenez les opérateurs de branchement conditionnel et de comparaison
[Python] En savoir plus sur pip
[python] Convertir la date en chaîne
Prise en charge de Fabric pour Python 3
Indentation Python et format de chaîne
Comparaison de vitesse de Python, Java, C ++
À propos des objets et des classes Python
À propos des variables et des objets Python
[Python] Utiliser une séquence de chaînes
À propos du module Python venv
Comparaison d'objets nuls en Python
fonction de mémorandum python pour débutant
Diverses opérations de chaîne avec Python intégré