繁体   English   中英

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

[英]How to create a dataframe from grouped data

我有一个数据框(我们称其为“ 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM