三国纷争
重新创建数据帧。将平均值系列发送到字典,然后索引定义行数。pd.DataFrame(df.mean().to_dict(), index=df.index)# A B#0 2.0 3.666667#1 2.0 3.666667#2 2.0 3.666667相同的概念,但首先创建完整阵列可以节省大量时间。pd.DataFrame(np.broadcast_to(df.mean(), df.shape), index=df.index, columns=df.columns)以下是一些时间。当然,这将略微取决于列数,但是当您提供整个数组开始时,您可以看到存在相当大的差异import perfplotimport pandas as pdimport numpy as npperfplot.show( setup=lambda N: pd.DataFrame(np.random.randint(1,100, (N, 5)), columns=[str(x) for x in range(5)]), kernels=[ lambda df: pd.DataFrame(np.broadcast_to(df.mean(), df.shape), index=df.index, columns=df.columns), lambda df: df.assign(**df.mean()), lambda df: pd.DataFrame(df.mean().to_dict(), index=df.index) ], labels=['numpy broadcast', 'assign', 'dict'], n_range=[2 ** k for k in range(1, 22)], equality_check=np.allclose, xlabel="Len(df)")