【问题标题】:more pythonic way - pandas dataframe manipulation更 Pythonic 的方式 - 熊猫数据框操作
【发布时间】:2019-03-12 14:03:21
【问题描述】:

假设我有一个名为 vals 的数据框,如下所示:

id........日期..........min_date... .......最大日期

1........2016/01/01........2017/01/01..........2018/07/01 2........2017/02/02........2017/01/01........2017/04/01 3........2016/05/01........2016/01/01........2016/07/01

我想添加一个名为within_range 的列,如果date 介于min_datemax_dateFalse 之间,则显示True。否则。

这是我的代码,但想知道是否有更有效的方法:

vals['within_range'] = False

for i in range(len(vals)):
    if vals.loc[i, 'date'] >= vals.loc[i, 'min_date']
          and vals.loc[i, 'date'] <= vals.loc[i, 'max_date']:

        vals.loc[i, 'within_range'] = True

【问题讨论】:

    标签: python pandas performance dataframe series


    【解决方案1】:

    你可以使用pd.Series.between:

    vals['within_range'] = vals['date'].between(vals['min_date'], vals['max_date'])
    

    【讨论】:

      【解决方案2】:

      难道不只是:

      vals['within_range'] = (
          vals['date'] >= vals['min_date'] &
          vals['date'] <= vals['max_date']
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-28
        • 2017-07-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多