熊猫从日期范围列中提取开始和结束日期[重复]
Posted
技术标签:
【中文标题】熊猫从日期范围列中提取开始和结束日期[重复]【英文标题】: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
谢谢
【问题讨论】:
【参考方案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
【讨论】:
以上是关于熊猫从日期范围列中提取开始和结束日期[重复]的主要内容,如果未能解决你的问题,请参考以下文章