【问题标题】:How to iterate over groups如何迭代组
【发布时间】:2015-11-24 04:34:01
【问题描述】:

我正在尝试迭代组(由 Pandas 中的 group.by 生成)以应用函数(在 MatPlotLib 中创建图表)并为 DataFrame 中的每个组获取结果。我想做这样的事情,但我知道有更好/更实用的方法:

import pandas as pd
DF = pd.DataFrame({'COL1': ['A', 'A','B','B'], 
                   'COL2' : [1,1,2,2],
                   'COL3' : [2,3,4,5]})


unique_list = set(df['COL1'])
for group in unique_list:
    if group == df['COL1']:
       <apply function to df['COL3'] 
       one group at a time, 
       starting with df['COL1'] == 'A'> 

【问题讨论】:

  • 请正确编辑您的代码

标签: python pandas matplotlib


【解决方案1】:

groupby 函数的结果是一个 pandas 数据框或系列。您可以使用应用功能。见下例:

groupedDF = DF.groupby(['COL1']).sum()

#Let's assume we want apply below function
def square(x):
    return x['COL2']*x['COL2']

#Below line will return the results with applied function
groupedDF.apply(square,axis=1)

#Let's assume Returned value is series
groupedSeries = DF.groupby(['COL1'])['COL2'].sum()

#Let's assume we want apply below function
def square(x):
    return x*x

#Below line will return the result
groupedSeries.apply(square)

【讨论】:

  • Shahram,谢谢您的回复。我想我应该澄清一下;我想一次选择一个组(可能通过 groupby)并使用该组行来输入为该组行生成图表的函数。例如,如果我有一个包含医院和医生数据的表,我会按医院分组,通过遍历医院组,一次为每个医院创建一个图表。该函数是我在 Matplotlib 中创建的。
  • 您可能可以使用 iteritems() 方法...例如在上面 groupedDF.iteritems() 中项目的代码中:打印项目将返回每一行...
猜你喜欢
  • 2012-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-26
  • 2019-05-26
  • 2019-01-02
  • 2020-11-20
相关资源
最近更新 更多