Ви можете транспонувати однорядовий фрейм даних (що все одно призводить до фрейму даних), а потім стиснути результати в ряд (обернене до 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
Примітка: Щоб врахувати питання, підняте @IanS (навіть якщо це не в запитанні OP), протестуйте розмір кадру даних. Я припускаю, що df
це фрейм даних, але випадки ребер - це порожній фрейм даних, фрейм даних фігури (1, 1) та фрейм даних з більш ніж одним рядком, і в цьому випадку використання має реалізувати бажану функціональність.
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
Це також можна спростити у відповідності до відповіді, наданої @themachinist.
if len(df) > 1:
pass
else:
result = pd.Series() if df.empty else df.iloc[0, :]
df.T