【问题标题】:Pandas resample apply function on whole rows?熊猫对整行重新采样应用功能?
【发布时间】:2019-11-08 05:09:26
【问题描述】:

是否有可能以某种方式获取重采样操作的行以应用自定义函数:

假设我们有一个 DataFrame df,其中包含例如孩子的生日、他们的名字和他们的朋友数量:

birthday    name   friends
datetime_1  Alice  10
datetime_2  Bob    5
   ...      ...    ...
datetime_n  Tom    12

如果我们现在按某个时间频率重新采样并尝试应用自定义函数:

df.resample("w").apply(my_func)

它只会将输入作为单独的系列而不是作为行传递。在Resampler.apply 的情况下没有axis 参数。那么有什么方法可以实现我想要的东西。或者是否有另一种内置方式可用于将自定义行为构建到缩减部分?例如,如果我想返回在给定时间间隔内按与该名称关联的朋友数量加权的最常用名称。

【问题讨论】:

    标签: python-3.x pandas time


    【解决方案1】:

    啊,好的。您需要的是 grouper 才能使用 groupby。

    df.groupby(pd.Grouper(freq='W')).apply(my_func)
    

    希望,就是这样。

    【讨论】:

    • 当然,但是我想跨行使用信息,因此我想根据给定行的多列计算一些东西。只是想知道是否有可能,我有一个基于将必要信息预处理到对象中然后进行应用的解决方案,但这很麻烦,我不确定它是否真的有必要。
    猜你喜欢
    • 1970-01-01
    • 2021-06-01
    • 2020-10-03
    • 2019-07-04
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    相关资源
    最近更新 更多