gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 20:28:35 25 4
gpt4 key购买 nike

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

import pandas as pd

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

:

Date
2015-05-05 121
2015-05-06 66
2015-05-07 108
2015-05-08 55
Name: Data3, dtype: int64

df 最后:

         Date   Sym  Data2  Data3  Data4
0 2015-05-08 aapl 11 5 NaN
1 2015-05-07 aapl 8 8 NaN
2 2015-05-06 aapl 10 6 NaN
3 2015-05-05 aapl 15 1 NaN
4 2015-05-08 aaww 110 50 NaN
5 2015-05-07 aaww 60 100 NaN
6 2015-05-06 aaww 100 60 NaN
7 2015-05-05 aaww 40 120 NaN

最佳答案

您想使用transform 。这将返回一个索引与 df 对齐的系列,以便您可以将其添加为新列:

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
         Date   Sym  Data2  Data3  Data4
0 2015-05-08 aapl 11 5 55
1 2015-05-07 aapl 8 8 108
2 2015-05-06 aapl 10 6 66
3 2015-05-05 aapl 15 1 121
4 2015-05-08 aaww 110 50 55
5 2015-05-07 aaww 60 100 108
6 2015-05-06 aaww 100 60 66
7 2015-05-05 aaww 40 120 121

关于python - 如何从 pandas groupby().sum() 的输出创建新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57654608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com