分享
三行代码  ›  专栏  ›  技术社区  ›  Bob Tomato

如何在一系列行上对pandas数据帧列进行矢量化?

  •  0
  • Bob Tomato  · 技术社区  · 1 周前

    所以我有一个Pandas数据帧,其中x列有y行。数据帧中的数据是float64值。我试图计算两列之间的斜率相关性,但对于单个列的范围(例如,列有25000行,我只希望值介于5-10之间,正好在第2000-4000行中)。为了做到这一点,我将以下面的psuedocode演示的方式进行迭代:

    for i in range(i, len(df['Column 1']))
        if df.loc[i, 'Column 1'] <= 10.0 & df.loc[i, 'Column 1'] >= 5.0:
            value = df.loc[i, 'Column 1'] / df.loc[i, 'Column 2']
            df['New Column'].append(value)
    

    我在寻找迭代Pandas数据帧的方法,发现了这个链接: How to iterate over rows in a Pandas DataFrame .

    我正在研究其他问题,大多数答案都有一定帮助,但我需要帮助解决我的具体问题。我认为我所要完成的大部分工作可以总结为以下清单:

    很抱歉,我的问题是重复性的,我只是在努力创建高效的迭代代码时,与这个特定的问题做斗争。

    1 回复  |  直到 1 周前
        1
  •  2
  •   Ruslan S.    1 周前

    鲍勃,

    df.loc[(df['Column 1'] <= 10.0) & (df['Column 1'] >= 5.0), 'New Column'] = df['Column 1'] / df['Column 2']
    

    就你而言, between 更加优雅:

     df.loc[(df['Column 1'].between(5, 10, inclusive=True), 'New Column'] = df['Column 1'] / df['Column 2']
    

    不管怎么说,直接数学运算比迭代运算快得多。看看熊猫的力量吧!:)