Python Pandas将数据附加到特定的行和列

2024-09-28 10:13:26 发布

您现在位置:Python中文网/ 问答频道 /正文

经过搜索,我不认为这是一个重复,但如果它是请让我知道。在

我现在有一个数据帧,有很多行和变量。我想创建一个单独的数据帧的单行,这是每个变量的平均值。我这样做是为了能很容易地把它画成图表。我不知道为什么我的语法不起作用。在

这是针对一个特定的变量。如果我能让它工作,那么我可以用一个循环将它扩展到所有列。在

avg = pd.DataFrame(columns=original.columns.values)
avg['max_yds'].loc[0] = original['max_yds'].mean(axis=0)

在我看来,第一行创建了一个名为“avg”的数据帧,它是空的,包含了原始数据的所有列。这似乎和预期的一样有效。对于第二行,我希望它将变量“max_yds”的第一行设置为“avg”中变量“max_yds”的平均值。相反,我得到:Empty DataFrame

谢谢!在


Tags: columns数据dataframe图表语法meanlocmax
2条回答

试试看

avg.set_value(0, 'max_yds', original['max_yds'].mean(axis=0))

如果要计算所有列的平均值,为什么不使用

^{pr2}$

编辑:

您最初的解决方案的问题是您使用了一种“chained indexing”,这很糟糕。在

您可以在每列中为序列添加值,但DataFrame的索引仍然为空。在

实际上,如果你加上

avg['max_yds'] = avg['max_yds']

之后

avg['max_yds'].loc[0] = original['max_yds'].mean(axis=0)

,您的代码也可以工作。在

或者您可以在开始时指定索引,这也可以解决您的问题。在

avg = pd.DataFrame(columns=original.columns.values, index=[0])

但是,不建议这样做。在

您也可以使用loc:

avg.loc[0, 'max_yds'] = original.loc[:, 'max_yds'].mean()

或者,您可以使用pandas.DataFrame.describe方法轻松检索统计信息。在

因此,如果你想要一个系列的平均值列:

avg = original.describe().loc['mean']

如果需要预期的输出数据帧:

avg = pd.DataFrame(index = [0], original.describe().loc['mean']).transpose()

相关问题 更多 >

    热门问题