【问题标题】:Select rows of pd.DataFrame where column values are "close" to each other选择列值彼此“接近”的 pd.DataFrame 行
【发布时间】:2020-10-03 15:43:05
【问题描述】:

数据集

我有一个电影数据集,其中有超过 50 万行,这个数据集如下所示(带有虚构的数字)

MovieName  Date           Rating      Revenue
A          2019-01-15     3           3.4 million
B          2019-02-03     3           1.2 million
...        ...            ...         ...

对象

选择上映日期“足够接近”的电影(例如电影 A 和电影 B 的上映日期相差不到一个月),看看什么时候评分相同,收入如何不同.

问题

我知道我可以编写一个双循环来实现这个目标。但是,我怀疑这是正确/有效的方法,因为

  • 一些posts(请参阅@cs95 对问题的评论)建议对数据框进行迭代是“反模式”,因此不建议这样做。
  • 数据集有超过 50 万行,我不确定编写双循环是否有效。

有人可以指点我的问题吗?提前谢谢你。

【问题讨论】:

  • 请显示预期输出和更多示例数据。

标签: python pandas


【解决方案1】:

一般来说,在使用 pandas 时您应该尽量避免循环。我的想法并不理想,但可能会为您指明正确的方向:

  1. 从每一行的日期列中检索月份和年份,以创建新列“月”和“年”。你可以看看怎么做here
  2. 然后,按月和年 (grouped_df = df.groupby(by=["month","year])) 对数据帧进行分组,生成的组是包含同一月份和同一年的电影的数据帧。现在由您来决定您想要执行的进一步分析,例如均值 (grouped_df = df.groupby(by=["month","year]).mean())、标准差或使用 apply() 函数进行更高级的分析。

如果你想要一个短于一个月的时间,你也可以extract weeks

【讨论】:

    猜你喜欢
    • 2021-10-14
    • 2022-01-17
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 2017-09-25
    • 1970-01-01
    • 2019-01-23
    相关资源
    最近更新 更多