【发布时间】:2018-09-05 14:45:01
【问题描述】:
我需要按日期时间列和另一个 str(object) 列对数据框进行分组转换,以按组应用函数并将结果分配给组的每个行成员。我了解groupby workflow,但不能同时为这两种情况创建pandas.Grouper。因此:
如何在多个列上使用pandas.Grouper?
【问题讨论】:
我需要按日期时间列和另一个 str(object) 列对数据框进行分组转换,以按组应用函数并将结果分配给组的每个行成员。我了解groupby workflow,但不能同时为这两种情况创建pandas.Grouper。因此:
如何在多个列上使用pandas.Grouper?
【问题讨论】:
使用DataFrame.groupby 和pandas.Grouper 列表作为by 参数,如下所示:
df['result'] = df.groupby([
pd.Grouper('dt', freq='D'),
pd.Grouper('other_column')
]).transform(foo)
【讨论】:
如果您的第二列是非日期时间系列,您可以将其与日期时间列分组,如下所示:
df['res'] = df.groupby([
pd.Grouper('dt', freq='D'),
'other_column'
]).transform(foo)
请注意,在这种情况下,您不必为第二列使用pd.Grouper,因为它是字符串对象而不是时间对象。 pd.Grouper 仅与日期时间列兼容。
【讨论】: