À des fins de programmation, je veux .iloc
pour renvoyer systématiquement une trame de données, même lorsque la trame de données résultante n'a qu'une seule ligne. Comment y parvenir?
Actuellement, .iloc
renvoie une série lorsque le résultat n'a qu'une seule ligne. Exemple:
In [1]: df = pd.DataFrame({'a':[1,2], 'b':[3,4]})
In [2]: df
Out[2]:
a b
0 1 3
1 2 4
In [3]: type(df.iloc[0, :])
Out[3]: pandas.core.series.Series
Ce comportement est mauvais pour 2 raisons:
.iloc
peut renvoyer une série ou une trame de données, m'obligeant à vérifier manuellement cela dans mon code- (mauvaise information, comme indiqué dans le commentaire).loc
, d'un autre côté, renvoie toujours une trame de données, rendant pandas
incohérent en lui-même
Pour l'utilisateur R, cela peut être accompli avec drop = FALSE
, ou en utilisant le tibble de tidyverse, qui renvoie toujours une trame de données par défaut.
Utilisez des supports doubles,
df.iloc[[0]]
Production:
a b
0 1 3
print(type(df.iloc[[0]])
<class 'pandas.core.frame.DataFrame'>
Court pour df.iloc[[0],:]
Spécifiez une tranche pour l'index de ligne.
df.iloc[0:1]
Il renvoie une trame de données à une seule ligne.
a b
0 1 3