Vous pouvez transposer la trame de données à une ligne (qui aboutit toujours à une trame de données), puis presser les résultats dans une série (l'inverse de to_frame
).
df = pd.DataFrame([list(range(5))], columns=["a{}".format(i) for i in range(5)])
>>> df.T.squeeze()
a0 0
a1 1
a2 2
a3 3
a4 4
Name: 0, dtype: int64
Remarque: pour prendre en compte le point soulevé par @IanS (même si ce n'est pas dans la question de l'OP), testez la taille du dataframe. Je suppose que df
c'est une trame de données, mais les cas extrêmes sont une trame de données vide, une trame de données de forme (1, 1) et une trame de données avec plus d'une ligne, auquel cas l'utilisation doit implémenter la fonctionnalité souhaitée.
if df.empty:
result = pd.Series()
elif df.shape == (1, 1)
result = pd.Series(df.iat[0, 0], index=df.columns)
elif len(df) == 1:
result = df.T.squeeze()
else:
pass
Cela peut également être simplifié selon la réponse fournie par @themachinist.
if len(df) > 1:
pass
else:
result = pd.Series() if df.empty else df.iloc[0, :]
df.T