当前位置: 首页 > 面试题库 >

Python-如何从pandas groupby().sum()的输出中创建新列?

卜凯旋
2023-03-14
问题内容

尝试从groupby计算中创建新列。在下面的代码中,我获得了每个日期的正确计算值(请参阅下面的组),但是当我尝试df['Data4']用它创建一个新列()时,我得到了NaN。因此,我正在尝试在数据框中使用Data3所有日期的总和创建一个新列,并将其应用于每个日期行。例如,2015-05-08位于2行中(总计为50 + 5 = 55),在这个新列中,我希望两行中都具有55。

import pandas as pd
import numpy as np
from pandas import DataFrame

df = pd.DataFrame({
    'Date' : ['2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05', '2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05'], 
    'Sym'  : ['aapl', 'aapl', 'aapl', 'aapl', 'aaww', 'aaww', 'aaww', 'aaww'], 
    'Data2': [11, 8, 10, 15, 110, 60, 100, 40],
    'Data3': [5, 8, 6, 1, 50, 100, 60, 120]
})

group = df['Data3'].groupby(df['Date']).sum()

df['Data4'] = group

问题答案:

你要使用transform此方法将返回索引与df对齐的Series,然后可以将其添加为新列:

In [74]:

df = pd.DataFrame({'Date': ['2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05', '2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05'], 'Sym': ['aapl', 'aapl', 'aapl', 'aapl', 'aaww', 'aaww', 'aaww', 'aaww'], 'Data2': [11, 8, 10, 15, 110, 60, 100, 40],'Data3': [5, 8, 6, 1, 50, 100, 60, 120]})
​
df['Data4'] = df['Data3'].groupby(df['Date']).transform('sum')
df
Out[74]:
   Data2  Data3        Date   Sym  Data4
0     11      5  2015-05-08  aapl     55
1      8      8  2015-05-07  aapl    108
2     10      6  2015-05-06  aapl     66
3     15      1  2015-05-05  aapl    121
4    110     50  2015-05-08  aaww     55
5     60    100  2015-05-07  aaww    108
6    100     60  2015-05-06  aaww     66
7     40    120  2015-05-05  aaww    121


 类似资料:
  • 问题内容: 我正在尝试在python中创建一个不错的列列表,以与我创建的命令行管理工具一起使用。 基本上,我想要一个像这样的列表: 变成: 使用普通标签不会解决问题,因为我不知道每一行中最长的数据。 这与Linux中的’column -t’相同。 我到处寻找各种python库来执行此操作,但找不到任何有用的方法。 问题答案: 这样做是计算最长的数据条目以确定列宽,然后在打印出每一列时用于添加必要的

  • 我试图用web表单做一个web调查应用程序。问题是我在调查创建部分有麻烦。

  • 问题内容: 假设我有一些无法访问原始PHP创建的数组的源输出: 现在,我想输入该数据,并使算法重新创建它正在打印的原始数组,以便可以将其用于自己的应用程序。 目前,我正在考虑a 和regex语句来提取数据并将其适当放置。在我进一步介绍之前,有没有一种更简单的方法,通过已经编写的代码或php插件为我准备好了呢? 问题答案: 不是我的代码,请在注释中找到:print_r’Matt ‘是所有者

  • 问题内容: 在许多语言(和地方)中,都有一种不错的做法,即通过创建一个像这样的块来创建本地范围。 我该如何在python中实现此功能而又不会出现意外的缩进错误,也不会使用某种技巧 问题答案: 在Python中,作用域分为三种类型:全局,局部和类。您可以创建专门的“作用域”词典以传递给exec / eval()。另外,您可以使用嵌套作用域(在另一个作用域中定义一个函数)。我发现这些在我的所有代码中就

  • 问题内容: 我有一个数组: 而且我会: 打印: 有功能吗,所以在做的时候: 我会把阵列取回来吗? 问题答案: 我实际上写了一个将“字符串数组”解析为实际数组的函数。显然,它有点笨拙,但可以在我的测试用例上使用。这是http://codepad.org/idlXdij3上功能原型的链接。 对于那些不想单击链接的人,我也会在内联发布代码:

  • 问题内容: 阅读AngularJS教程第9步后, 我创建了自己的AngularJS过滤器,该过滤器应将布尔数据转换为html。 这是我的过滤器代码: 这是我的HTML代码: 问题是浏览器将返回值按字面显示为: 而不是应显示的图标(或呈现的html)。 这是JSFiddle示例 我认为在此过程中会发生一些消毒。 是否可以关闭此特定过滤器的消毒功能? 我也知道如何通过不从过滤器返回HTML输出而是显示