【问题标题】:How can I resample (upsample) my Pandas Dataframe?如何重新采样(上采样)我的 Pandas 数据框?
【发布时间】:2019-04-15 09:18:01
【问题描述】:

我有一个小的 Pandas DataFrame 我想重新采样,希望你能帮助我:)

我不能给你看,因为它是机密的,但我可以向你描述一个更简单的版本。

它有 4 列:

-日期(YYYY-MM-DD 格式)

-国家

-金额

-频率

这就是我想做的:

根据行,频率为每年或每月 如果碰巧是每月一次,则无需执行任何操作。

但如果是每年,我想将其更改为 MONTHLY 并插入 11 个新行,以便在考虑的 12 行(现有行和 11 个新行)中,国家/地区将保持不变(因此国家名称相同重复 12 次),金额将是 amount/12(也重复 12 次,你明白了),并且日期将每行增加 1 个月。

我真的希望有人可以帮助我!

提前致谢,

亚历克斯

编辑:

我已经将日期列更改为索引使用

df.set_index("日期",inplace=True)

但是,我真的不知道如何将重采样功能用于我的目的......

【问题讨论】:

    标签: pandas dataframe


    【解决方案1】:

    首先确保您的数据框具有DateTimeIndex 类型的索引。

    然后使用resample 函数对数据帧进行上采样(更高频率)或下采样(更低频率)。然后应用聚合器(例如sum)来聚合新采样频率的值。

    在此处查看resample 文档:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.resample.html

    【讨论】:

    • 好的,现在您已经将“日期”列作为索引,使用df.index = pd.to_datetime(df.index) 将其转换为DateTimeIndex,然后使用resample 将采样调整到给定的间隔。
    • 是的,但是我如何/在哪里写下我上面提到的所有条件?
    • 因为您需要根据另一列的值重新采样,所以最好只根据频率掩码创建一个新数据帧,并在必要时重新采样。然后,在正确采样后连接生成的数组。
    • 我完全同意你的看法,但这正是我不知道该怎么做的!
    • 有关屏蔽的信息,我会向您指出这个问题:stackoverflow.com/questions/38802675/…。要从掩码连接生成的数据帧,请查看 concat 文档 (pandas.pydata.org/pandas-docs/stable/generated/…)。如果您仍然遇到问题,请为此打开一个新问题。如果我已经解决了这个特定的重采样问题,请接受这个答案。
    猜你喜欢
    • 2017-09-19
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 2013-01-13
    相关资源
    最近更新 更多