在Pandas中的Groupby操作,可以把数据框架中的行或者列分组,然后对分组后的数据进行聚合,统计分析等操作。但是,在实际的应用场景中,有时候需要把分组后的数据框架中的行分别保存到一个列表中。下面是针对这个需求的详细讲解。
首先,我们可以通过Pandas中的Groupby函数对数据进行分组。例如,下面的例子中我们按照“B”列的值进行分组。
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': [9, 10, 11, 12, 13, 14, 15, 16]})
grouped = df.groupby('B')
接下来,我们可以使用apply函数来对分组后的数据进行操作。apply函数接受一个自定义的函数作为参数,在这个函数中,我们可以对每个分组进行操作并返回一个结果。例如,下面的例子中,我们定义了一个函数,把分组后的数据框架的行保存到一个列表中。
def group_to_list(df):
return df.values.tolist()
grouped.apply(group_to_list)
这样,就可以把分组后的数据框架中的行保存到一个列表中了。注意,这里的结果是一个序列,序列中的每个元素都是一个列表。
完整代码如下:
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': [9, 10, 11, 12, 13, 14, 15, 16]})
grouped = df.groupby('B')
def group_to_list(df):
return df.values.tolist()
grouped.apply(group_to_list)
结果为:
B
one [[foo, one, 1, 9], [bar, one, 2, 10], [foo, one, ...
three [[bar, three, 4, 12], [foo, three, 8, 16]]
two [[foo, two, 3, 11], [foo, two, 5, 13], [bar, tw...
dtype: object
其中,每个元素都是一个列表,这个列表中保存了每个行的信息。例如,第一个元素是:
[[foo, one, 1, 9], [bar, one, 2, 10], [foo, one, 7, 15]]
这个列表中保存了所有B列的值为“one”的行的信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何在Pandas Groupby中把数据框架的行分组到列表中 - Python技术站