【问题标题】:pandas extract start and end date from date range colum [duplicate]熊猫从日期范围列中提取开始和结束日期[重复]
【发布时间】:2019-07-01 11:09:19
【问题描述】:

我有一个包含日期范围的列,我只想将其分别提取到开始日期和结束日期。不确定这是否可以直接使用datetime.strptime

df_have = pd.DataFrame([[1, '01 Jan 2019-04 Jan 2019'], [2, '07 Jan 2019-11 Jan 2019']], columns=['Index', 'Range'])

Index   Range
0   1   01 Jan 2019-04 Jan 2019
1   2   07 Jan 2019-11 Jan 2019

df_want = pd.DataFrame([[1, '01 Jan 2019', '04 Jan 2019'], [2, '07 Jan 2019', '11 Jan 2019']], columns=['Index', 'Start', 'End'])

Index   Start   End
0   1   01 Jan 2019 04 Jan 2019
1   2   07 Jan 2019 11 Jan 2019

谢谢

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    使用str.split

    例如:

    import pandas as pd
    
    df_have = pd.DataFrame([[1, '01 Jan 2019-04 Jan 2019'], [2, '07 Jan 2019-11 Jan 2019']], columns=['Index', 'Range'])
    df_have[["start", "end"]] = df_have.pop("Range").str.split("-", expand=True)    #Thanks @ jezrael
    print(df_have)
    

    输出:

       Index        start          end
    0      1  01 Jan 2019  04 Jan 2019
    1      2  07 Jan 2019  11 Jan 2019
    

    【讨论】:

    • 我现在看到我已经从datetime 的角度考虑了 q,而使用str.split 可以很容易地解决它。谢谢你的回答
    【解决方案2】:
    import pandas as pd
    df_have['Start']=df_have['Range'].map(lambda x:x.split('-')[0])
    df_have['End']=df_have['Range'].map(lambda x:x.split('-')[1])
    df_have.drop('Range', axis=1)
    print(df_have) 
       Index        Start          End
    0      1  01 Jan 2019  04 Jan 2019
    1      2  07 Jan 2019  11 Jan 2019
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 2020-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-06
      相关资源
      最近更新 更多