合并数据帧最后一行中的一些列

2024-06-06 15:23:31 发布

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

edit:我知道如何获取实际值,但我想知道如何将包含这两个总和的行附加到现有df

我有一个数据帧记分卡,看起来像:

^{tb1}$

现在我想添加一行,将所有15分钟的数字(前3列)和30分钟的数字相加,依此类推(实际df更大)。这意味着我不想把各个列相加,而是要把各个列的总和相加。我要添加的行如下所示:

^{tb2}$

请忽略标题,这只是为了澄清我的意图。 我假设涉及到一个多索引,但我不知道如何将它应用到我现有的df中,以实现所需的输出

另外,是否可以在整个表的总和中添加一个列

谢谢你的支持


Tags: 数据标题df数字edit意图总和记分卡
3条回答
  • 这取决于轴

简单-这是轴0中的值之和: 因此,在您的例子中是-列(它是垂直列中所有值的总和)

df.sum(axis = 0, skipna = True)

打印(df):

输出:

enter image description here

sum_column = df["col1"] + df["col2"]
df["col3"] = sum_column
print(df)

输出:

enter image description here


因此,在你的情况下:

summed0Axis = df.sum(axis = 0, skipna = True)
sum_column = summed0Axis["15min_colour"] + summed0Axis["15min_high"] + summed0Axis["15min_price"]

print(sum_column)

更智能的选项:

查找所有列,其中包括15列:

columnsWith15 = df.loc[:,df.columns.str.contains("15").sum]
columnsWith30 = df.loc[:,df.columns.str.contains("30").sum]

您可以这样求和:

np.sum(df.filter(like='15').values), np.sum(df.filter(like='30').values)

0,8

groupby

可以接受一个可调用(think函数)并在indexcolumns上使用它

df.groupby(lambda x: x.split('_')[0], axis=1).sum().sum()

15min    0
30min    8
dtype: int64

相关问题 更多 >