【问题标题】:How do I change a function according to a value in a specific column如何根据特定列中的值更改函数
【发布时间】:2019-10-06 03:12:48
【问题描述】:

假设我有一个包含两列的表格:

  1. 价值

我现在想创建一个第三列,它将汇总每个月的值(并将在本月的每一行中显示每个月的总产品。 任何通用功能都可以做到,而无需我在函数中指定每种情况? (如果我要使用“If”函数,我会这样做..)

给出的示例: 我最初的 2 列是“月”和“值”,我想要一个创建“总和”列的函数。

Month  Value     Sum
6      23        57
6      34        57
7      56        100
7      44        100
8      12        12

【问题讨论】:

  • 也许您可以添加此表的示例和所需的输出来澄清您的问题。还有你到目前为止所尝试的。你标记了group-by,我想这就是你想要的通用功能。
  • @Valentino 感谢您的评论。我实际上还没有尝试任何东西,因为我不知道如何接近它。我可以在此处的评论中附加表格/图片吗?
  • 不在评论中,但您可以edit您的问题。比图像更好的文本表。您可以通过选择文本来格式化它,然后单击您编写的文本区域顶部栏中的{}
  • @Valentino 谢谢,我现在已经更改并添加了一个表格。有什么想法吗?

标签: function group-by formula aggregate-functions


【解决方案1】:

一般程序

一般过程是使用sumgroup by 'Month'。这将返回一个表,其中 Month 用作索引(没有重复的月份),并且您有一列包含所有月份的总和。

使用您的示例,您将获得以下中间表:

Month  Sum
6      57
7      100
8      12

然后您可以使用此表在原始表中创建 Sum 列。
基本上,您只需从具有相同 Month 的所有行中的中间表中复制 Sum 中的值。

现在如何做到这一点取决于你使用的技术,但你没有指定,所以我用我知道的工具做几个例子:如果你使用不同的工具,试着适应这个想法。

使用 python 熊猫

假设df 是您使用pandas 创建的原始表(没有Sum 列)。那么程序是:

#create the intermediate table using sum and groupby
idf = df.groupby('Month').sum()

#edit idf so that the number of rows is the same of df
idf = idf.loc[df['Month']].reset_index()

#adding the column to the original table
df['Sum'] = idf['Value']

使用 MySQL

假设otableMySQL 数据库中的原始表(没有 Sum 列)。那么程序是:

#create additional column to store the Sum, null by default 
ALTER TABLE otable ADD COLUMN Sum INT;

#create the intermediate table using sum and groupby
CREATE TEMPORARY TABLE idf SELECT SUM(Value) FROM otable GROUP BY Month;

#update the original table
UPDATE otable o, idf i SET o.Sum = i.`SUM(Value)` WHERE o.Month = i.Month;

使用excel

对于 excel,已经回答了 herehere

【讨论】:

  • 谢谢,华伦天奴!我最初的意图是使用 Excel。我也使用 MySQL,所以这很有帮助。我会尝试去做,做完之后会在这里写。不过,您对在 Excel 中执行此操作有什么想法吗?
  • 我不是excel高手,让我看看能不能快速搞定
猜你喜欢
  • 2020-07-19
  • 2023-02-02
  • 2019-07-19
  • 2022-01-05
  • 1970-01-01
  • 2022-12-15
  • 2020-11-24
  • 1970-01-01
  • 2010-12-06
相关资源
最近更新 更多