熊猫:字符串系列的最大agg

时间:2020-06-09 15:40:49

标签: python pandas

如何在这样的字符串列中设置最大值?

        dataframe = pandas.DataFrame.from_dict(
            {
                "DEPARTMENT_ID": ["A", "B", "A", "B"],
                "SLOT_BEGIN_TIME": ["2014-01-01", "2014-01-02", "2014-02-01", "2014-02-02"],
            }
        )
        dataframe["MAX_TIME"] = dataframe.groupby(["DEPARTMENT_ID"])["SLOT_BEGIN_TIME"].max()

我获得数据帧[“ MAX_TIME”]的NaN。 如果无法在非数字序列上执行max操作,我可以编写自己的比较函数吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

无论何时要重新分配给数据框,都应使用transform

dataframe['MAX_TIME'] = dataframe.groupby('DEPARTMENT_ID')['SLOT_BEGIN_TIME'].transform('max')

输出:

  DEPARTMENT_ID SLOT_BEGIN_TIME    MAX_TIME
0             A      2014-01-01  2014-02-01
1             B      2014-01-02  2014-02-02
2             A      2014-02-01  2014-02-01
3             B      2014-02-02  2014-02-02

说明

dataframe.groupby(["DEPARTMENT_ID"])["SLOT_BEGIN_TIME"].max()

为您提供了一个由唯一的DEPARTMENT_ID索引的系列:

DEPARTMENT_ID
A    2014-02-01
B    2014-02-02
Name: SLOT_BEGIN_TIME, dtype: object

请注意,系列的索引与dataframe的索引不同。另一方面,当您进行系列分配时:

dataframe['SOME_COL'] = some_series

熊猫将对齐两个系列的索引,在这种情况下,它们是不重叠的。因此,您将看到所有NaN个值。