Skip to main content
 首页 » 编程设计

python之如何从分组数据创建数据框

2025年05月04日11xxx_UU

我有一个数据框(我们称之为“csv”),我想对其进行分组并获取该组第一个元素的值。示例:

A   B   C  D 
foo bar happy yellow 
foo bar sad   green 
foo ape last  laugh 

我想要这样的输出:

A   B   C 
foo bar happy 
foo ape last 

我目前这样做:

grp1 = csv.groupby(['A','B']) 
lst = [(A,B,csv.ix[group[0]]['C']) for (A,B),group in grp1.groups.items()] 
df = DataFrame(lst,columns=['A','B','C']) 
df.to_csv('grp.csv',cols=['A','B','C'],index=False) 

但这似乎效率低下。我真的必须先创建一个列表,然后从中创建一个 dataframe 吗?有没有办法直接创建一个 dataframe,或者在原始 dataframe 上做一些索引或其他事情,这样我就可以只处理第一条记录每组?

请您参考如下方法:

您可以使用 aggregate 来定义聚合函数,它只会保留列的第一个元素并删除其他元素。

    In [60]: grp = df.groupby(['A', 'B']) 
 
    In [61]: grp.aggregate({'C': lambda c: c.ix[c.first_valid_index()]}) 
    Out[61]: 
                 C 
    A   B   
    foo ape   last 
        bar  happy