Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Post History
Conceptually, applying a function along an axis of a DataFrame (i.e., applying it to each row or column) inherently produces a Series: a two-dimensional result is collapsed to a one-dimensional res...
Answer
#1: Initial revision
Conceptually, applying a function along an axis of a `DataFrame` (i.e., applying it *to* each row or column) inherently produces a `Series`: a two-dimensional result is collapsed to a one-dimensional result, because one-dimensional "lines" of data are fed into a function that produces a scalar value. Such a series can be *appended as* a row to an existing `DataFrame`, if the labels are compatible - such as with the original `DataFrame`: ```python >>> df.loc['avg'] = df.mean() >>> df A B 0 1.0 5.0 1 2.0 6.0 2 3.0 7.0 3 4.0 8.0 avg 2.5 6.5 ``` However, creating a row *by itself* - i.e., in a new DataFrame - either requires an existing DataFrame with those labels: ```python >>> x = df.mean() >>> y = pd.DataFrame(columns=x.index) >>> y.loc[0] = x >>> y A B 0 2.5 6.5 ``` or creating it as you have tried already. As a hint, the `T` property saves some typing: ```python >>> df.mean().to_frame().T A B 0 2.5 6.5 ``` However, there is not an option for converting a `Series` *directly* to a single-row `DataFrame`; it converts to a column regardless. Reference: https://stackoverflow.com/questions/59406045