【问题标题】:Change column value based on another column's first characters in pandas根据熊猫中另一列的第一个字符更改列值
【发布时间】:2022-02-19 09:39:24
【问题描述】:

有两列 start_dateend_date(字符串):

end_date 中的某些行的格式类似于 9999-12-12 我想用 start_date

中的 YYYY 替换 9999

我尝试提取 start_date 列的前 4 个字符(得到一个 pd.Series)并使用它来替换,但我找不到方法

怎么样

start_date end_date
2020-12-25 2020-12-28
2021-02-02 9999-02-09
2019-02-13 9999-02-15

应该怎样

start_date end_date
2020-12-25 2020-12-28
2021-02-02 2021-02-09
2019-02-13 2019-02-15

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    或者使用np.where:

    df['end_date'] = np.where(df.end_date.str[:4] == '9999', df.start_date.str[:4] + df.end_date.str[4:], df.end_date)
    
    df
       start_date    end_date
    0  2020-12-25  2020-12-28
    1  2021-02-02  2021-02-09
    2  2019-02-13  2019-02-15
    

    【讨论】:

      【解决方案2】:

      假设你的数据框被称为df:

      df['end_date'] = df.apply(lambda row: row['end_date'].replace("9999", row['start_date'][0:4]), axis=1)
      

      【讨论】:

        猜你喜欢
        • 2019-08-11
        • 2013-10-14
        • 1970-01-01
        • 2022-11-16
        • 2020-11-26
        • 1970-01-01
        • 2020-12-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多