【问题标题】:aggregate groups results in pandas data frame聚合组导致熊猫数据框
【发布时间】:2019-09-07 14:52:22
【问题描述】:

我只是想知道如何将所有结果按熊猫数据框分组。

data1 = {'id':['1', '1', '2', '2', '2', '3', '3', '3'],  
        'Age':[27, 24, 22, 32, 33, 36, 27, 32],    
        'Qualification':['Msc', 'MA', 'MCA', 'Phd','B.Tech', 'B.com', 'Msc', 'MA']
        }
df = pd.DataFrame(data1) 


grp = df.groupby('id') 
for name, group in grp:
    x = group.Age * 2 
    print (x)

0    54
1    48
Name: Age, dtype: int64
2    44
3    64
4    66
Name: Age, dtype: int64
5    72
6    54
7    64
Name: Age, dtype: int64

我已经厌倦了这样它只保存最后一组。

result = pd.DataFrame(x) 
result

Age
5   72
6   54
7   64

如何将所有这些结果保存在 pandas 数据框中?

预期结果

Age 
0   54
1   48
2   44
3   64
4   66
5   72
6   54
7   64

【问题讨论】:

  • 你能详细说明这个问题吗?
  • @Nabin 我希望它现在很清楚了。
  • 为什么不df['Age'].values * 2
  • @ComplicatedPhenomenon nope,我只是想把 x 保存在 pandas 中怎么做?
  • df['doubled_age'] = df['Age'].map(lambda x: x*2) # 现在看看df的值

标签: python python-3.x pandas aggregate


【解决方案1】:
data1 = {'id':['1', '1', '2', '2', '2', '3', '3', '3'],  
         'Age':[27, 24, 22, 32, 33, 36, 27, 32],    
         'Qualification':['Msc', 'MA', 'MCA', 'Phd','B.Tech', 'B.com', 'Msc', 'MA']
        }
df = pd.DataFrame(data1) 

grp = df.groupby('id') 
x = []    # Create an empty list

for name, group in grp:
   b = group.Age * 2  # Do your group vise operations 
   x.extend(b)               # Extend your list with with your restuls

result = pd.DataFrame(x, columns=['Age'])
print(result)


    Age
0   54
1   48
2   44
3   64
4   66
5   72
6   54
7   64

【讨论】:

  • 感谢您的回答,这对我不起作用。我需要为每个组使用 for 循环。再看看这个问题,我如何在 pandas 的一列中转换 (x)
  • @HaniIhlayyle 你试过然后回复了吗?
  • @Nabin 此解决方案有效。但就我而言,我需要为每个组做一些操作。我得到的结果与 x 相似。我已将其转换为数组,但它对我不起作用。如何在 pandas 数据框中保存 x。
  • @HaniIhlayyle 现在可以看看吗?我添加了一个列表来收集您在 GroupWise 中的每个操作结果。
  • @AshanPriyadarshana。好东西,非常感谢
【解决方案2】:

你可以使用transform:

df['answer'] = df.groupby('id')['Age'].transform(lambda x: x * 2)

输出df:

    id  Age Qualification   answer
0   1   27  Msc             54
1   1   24  MA              48
2   2   22  MCA             44
3   2   32  Phd             64
4   2   33  B.Tech          66
5   3   36  B.com           72
6   3   27  Msc             54
7   3   32  MA              64

【讨论】:

    【解决方案3】:

    这是你想要的吗?

    pd.DataFrame(df['Age']*2)
    

    输出

        Age
    0   54
    1   48
    2   44
    3   64
    4   66
    5   72
    6   54
    7   64
    

    【讨论】:

      猜你喜欢
      • 2022-01-21
      • 2016-10-03
      • 1970-01-01
      • 2016-06-24
      • 2019-08-02
      • 2017-02-22
      • 1970-01-01
      • 2015-02-03
      • 2018-09-20
      相关资源
      最近更新 更多