Pandas groupby保存到dataFrame

直接使用reset_index方法删除原来索引 

test_df = pd.DataFrame({'a':[1,1,3,2],'b':[1,4,6,9],'c':[1,4,8,12]})
g_df =test_df['c'].groupby([test_df['a'], test_df['b']]).sum()
c_df = pd.DataFrame(g_df)
c_df.reset_index(inplace=True)

  • 12
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 可以使用 pandas 的 `groupby` 方法将数据按照特定的列分组,然后使用 `reset_index()` 方法将分组后的结果转化为数据框。 示例代码如下: ``` import pandas as pd # 创建数据框 df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'], 'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'], 'C': [1, 2, 3, 4, 5, 6, 7, 8], 'D': [10, 20, 30, 40, 50, 60, 70, 80]}) # 分组 grouped = df.groupby(['A', 'B']) # 转成数据框 result = grouped.sum().reset_index() print(result) ``` 输出: ``` A B C D 0 bar one 2 20 1 bar three 4 40 2 foo one 8 80 3 foo two 8 80 4 foo three 8 80 ``` 在上面这个示例中,我们将数据按照 'A' 和 'B' 两列进行分组,然后使用 `sum()` 方法对每组数据求和,最后使用 `reset_index()` 方法将分组后的结果转化为数据框。 ### 回答2: 在使用pandas进行数据处理时,常常需要将数据按照某些条件进行分组,这时候就可以使用groupby操作。groupby操作可以将数据按照指定的列或多列进行分组,并对每个分组进行聚合操作,例如计算平均值、总和等等。但是groupby操作得到的结果是一个groupby object对象,如果需要进一步处理,需要将其转化为dataframe。 转化为dataframe的方法有几种,以下是两种常见的方法: 方法一:使用groupby的agg()函数进行聚合,并指定as_index=False参数。 例如,我们有以下的数据集: ``` import pandas as pd data = { 'name': ['Alice', 'Bob', 'Charlie', 'David', 'Alice', 'Charlie'], 'year': [2017, 2017, 2018, 2018, 2019, 2019], 'score': [80, 70, 90, 80, 85, 95] } df = pd.DataFrame(data) ``` 我们想按照name和year进行分组,计算每个人每年的平均成绩,并将结果转化为dataframe,代码如下: ``` grouped = df.groupby(['name', 'year']).agg({'score': 'mean'}) result = grouped.reset_index() ``` 这里将groupby的结果使用agg()函数进行聚合操作,将score列按照平均值进行计算,然后使用reset_index()将结果转化为dataframe。 方法二:使用groupby的size()函数进行计数操作,并使用unstack()函数进行转换。 例如,我们有以下的数据集: ``` import pandas as pd data = { 'name': ['Alice', 'Bob', 'Charlie', 'David', 'Alice', 'Charlie'], 'year': [2017, 2017, 2018, 2018, 2019, 2019], 'score': [80, 70, 90, 80, 85, 95] } df = pd.DataFrame(data) ``` 我们想按照name和year进行分组,计算每个人每年的成绩数,并将结果转化为dataframe,代码如下: ``` grouped = df.groupby(['name', 'year']).size() result = grouped.unstack(fill_value=0).reset_index() ``` 这里将groupby的结果使用size()函数进行计数操作,然后使用unstack()函数将结果转化为dataframe。 无论是哪种转化方法,我们都可以得到一个转化后的dataframe,便于我们进行进一步的数据分析和可视化操作。 ### 回答3: Pandasgroupby函数可以按照指定的列进行分组,将数据分组后进行聚合操作,如求和、平均值等。groupby后的数据类型是DataFrameGroupBy对象,可以通过apply、agg等方法进行进一步的操作。 如果需要将groupby后的结果转换成DataFrame,可以使用reset_index()方法。reset_index()方法可以还原索引,将分组后的数据转换成DataFrame,其中包含了所有分组列以及聚合后的结果。 例如,对以下数据进行分组和聚合操作: ``` import pandas as pd data = {"class": ["A", "B", "C", "A", "B", "C"], "score": [80, 90, 70, 85, 95, 75], "name":["Tom", "Jerry", "Lucy", "Lily", "Amy", "John"]} df = pd.DataFrame(data) grouped = df.groupby("class")["score"].agg(["mean", "max"]) ``` 得到的grouped数据如下: ``` mean max class A 82.500000 85 B 92.500000 95 C 72.500000 75 ``` 可以使用reset_index()方法将其转换成DataFrame: ``` result = grouped.reset_index() ``` 得到的result数据如下: ``` class mean max 0 A 82.5 85 1 B 92.5 95 2 C 72.5 75 ``` 可以看到,转换后的result数据包含了groupby列“class”,以及聚合后的结果“mean”和“max”。如果对多列进行groupby,则需要使用多列的名称进行分组。转换成DataFrame的方法也一样,使用reset_index()即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值