如何在这样的字符串列中设置最大值?
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操作,我可以编写自己的比较函数吗?
谢谢。
答案 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
个值。