将逻辑应用于熊猫的groupby的多行

时间:2020-05-17 20:49:52

标签: python pandas dataframe pandas-groupby

考虑数据帧{ "name": "mycustomslot", "values": [ { "name": { "value": "eating", "synonyms": [ "eat something", "are you eating", "eat" ] } }, { "name": { "value": "drinking", "synonyms": [ "drink something", "drinking", "drink", ] } } { "name": { "value": AMAZON.NUMBER, "synonyms": [] } } } ] },

df

date time isopen isclose openlate closeearly 20200201 0920 Y N Y N 20200201 1645 N Y N Y 20200202 0900 Y N N N 20200202 1650 N Y N Y 20200203 0910 Y N Y N 20200203 1700 N Y N N openlate是根据时间和closeearly列计算的。

我想按日期展平,有类似的东西

isopen/isclose

基本上是通过 date openlate closeearly 20200201 Y Y 20200202 N Y 20200203 Y N ,分区或窗口函数折叠多行,然后选择要在各行之间保留哪个值的逻辑。在很多情况下,我确实有这种情况。

groupby

2 个答案:

答案 0 :(得分:0)

您可以使用DataFrameGroupBy.agg方法。它允许您应用自定义功能来汇总每个组。实际上,它甚至允许您传递将每一列映射到不同功能的字典。

在您的情况下:

df.groupby('date').agg(any)

答案 1 :(得分:0)

使用命名聚合.agg

df1 = df.groupby('date').agg(
openlate=('openlate','first'),
closeearly=('closeearly','last'))

print(df1)

         openlate closeearly
date                        
20200201        Y          Y
20200202        N          Y
20200203        Y          N