Pour améliorer un modèle, je passe plusieurs .query () à un dataframe pandas. Dans la boucle for, j'aurais également une requête vide, mais je n'ai rien trouvé dans la documentation. Il devrait renvoyer le dataframe complet.
J'ai essayé:
temp_df.query(None) temp_df.query()
Mais cela ne fonctionne pas. D'autres idées?
Merci
3 Réponses :
Le mieux que je puisse trouver au guichet automatique, mais toujours pas satisfaisant:
col = temp_df.columns[0]
temp_df.query(f"{col}.isnull() or {col}.notnull()")
ça marche :) Je suppose qu'une solution plus pratique devrait être implémentée par les développeurs de pandas.
Utilisez un tableau booléen de la même longueur que votre DataFrame:
In [2]: df = pd.DataFrame(np.arange(16).reshape(4, 4), columns=list('ABCD'))
In [3]: trivially_true = np.repeat(True, len(df))
In [4]: trivially_false = np.repeat(False, len(df))
In [5]: df
Out[5]:
A B C D
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
In [6]: df.query('@trivially_true')
Out[6]:
A B C D
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
In [7]: df.query('@trivially_false')
Out[7]:
Empty DataFrame
Columns: [A, B, C, D]
Index: []
Vous pouvez utiliser le mot-clé 'index' pour cela:
temp_df.query('index == index or index != index')
Cela vous donnera à la fois des indices nuls et non nuls du dataframe, c'est-à-dire l'intégralité du dataframe.
p>
Que doit renvoyer une requête vide?
le dataframe complet
Pourquoi ne renvoyez-vous pas simplement
temp_dfdans ce cas?+1 sur cette question. Un bon scénario que j'ai régulièrement est que je crée des requêtes par programme comme dans
q = some_func (); view = temp_df.query (q)et j'aimerais avoir la requête "vide" pour renvoyer le dataframe complet. Une solution triviale serait d'utiliser quelque chose commesi q vaut None: view = temp_df else view = temp_df.query (q). Mais je préfère ne pas le faire. Une requête vide serait idéale pour ces cas.Une autre façon d'exprimer cela est de le considérer comme l'équivalent de
WHERE 1 = 1en SQL.