【问题标题】:Iterating over a dataframe column迭代数据框列
【发布时间】:2020-06-08 23:27:08
【问题描述】:

我有一个数据框:

  County Date  Cases 
0 Adams 1/20/20 0
1 Adams 1/21/20 550
2 Adams 1/22/20 650
3 Adams 1/23/20 800
4 Adams 1/24/20 900
5 Adams 1/25/20 1000

我想创建一个新列“每天的案例数”,我想用索引 1 和索引 0、索引 3 和索引 2...等之间的差异来填充它,直到整个列都是字段。关于如何解决这个问题的任何想法。理想情况下,我希望新输出看起来像这样

  County Date    Cases  Cases Per Day
0 Adams  1/20/20 0      0
1 Adams  1/21/20 550    550
2 Adams  1/22/20 650    100
3 Adams  1/23/20 800    150 
4 Adams  1/24/20 900    100
5 Adams  1/25/20 1000   100

【问题讨论】:

  • 欢迎来到 SO。这不是讨论论坛或教程。请使用tour 并花时间阅读How to Ask 以及该页面上的其他链接。 Any idea on how I could go about this - 从 Pandas 文档的入门部分开始,然后转到用户指南部分 - 练习其中的示例 - 最终您将获得有关如何解决问题的想法 - 如果遇到障碍,请尝试一下回来问具体问题。

标签: python pandas


【解决方案1】:

您应该避免迭代 pandas DataFrames 或 Series,而是尝试使用 pandas 或 numpy 的矢量化方法。在这里,shift 会有所帮助:

df['Cases Per Day'] = df['Cases'] - df['Cases'].shift().fillna(0).astype('int')

将给出没有(显式)循环的预期结果。

【讨论】:

    猜你喜欢
    • 2021-07-10
    • 1970-01-01
    • 2020-10-16
    • 2018-06-17
    • 2023-01-14
    • 1970-01-01
    • 2021-02-12
    • 2017-11-05
    • 2020-07-30
    相关资源
    最近更新 更多