仅当 Pandas DataFrame 列包含新行、非单词时才保留日期值
Keep Date Values Only When a Pandas DataFrame Column Includes New Lines, non-words
我已将以下示例数据集导入到 pd 数据框中。
我的计划是从“有”生成一个看起来像“想要”的输出。
换句话说,我试图仅在日期值与时间分量和一些不必要的非单词混合时才尝试获取日期值。
我试过 datetime.date
但似乎不起作用,因为它只适用于日期时间格式。
我尝试使用几个正则表达式,但它们也删除了连字符并在年、月、日之间留下 space .
解决这个问题的好方法是什么?任何帮助将不胜感激。
have
ID Date_time
210 01-01-2016\r\n01:07 PM
205 01-06-2017\r\n01:10 PM
... ...
1504 ââ¬Å½30-10-2014\r\n01:15 AM
1544 ââ¬Å½11-10-2018\r\n05:38 AM
wants
ID Date_time
210 2016-01-01
205 2017-06-01
... ...
1504 2014-10-30
1544 2018-10-11
使用str.extract
combined with pandas.to_datetime
:
df['Date_time'] = pd.to_datetime(df['Date_time'].str.extract('(\d{2}-\d{2}-\d{4})',
expand=False), format='%d-%m-%Y')
print(df)
# Output
ID Date_time
0 210 2016-01-01
1 205 2017-06-01
2 1504 2014-10-30
3 1544 2018-10-11
我已将以下示例数据集导入到 pd 数据框中。
我的计划是从“有”生成一个看起来像“想要”的输出。
换句话说,我试图仅在日期值与时间分量和一些不必要的非单词混合时才尝试获取日期值。
我试过 datetime.date
但似乎不起作用,因为它只适用于日期时间格式。
我尝试使用几个正则表达式,但它们也删除了连字符并在年、月、日之间留下 space .
解决这个问题的好方法是什么?任何帮助将不胜感激。
have
ID Date_time
210 01-01-2016\r\n01:07 PM
205 01-06-2017\r\n01:10 PM
... ...
1504 ââ¬Å½30-10-2014\r\n01:15 AM
1544 ââ¬Å½11-10-2018\r\n05:38 AM
wants
ID Date_time
210 2016-01-01
205 2017-06-01
... ...
1504 2014-10-30
1544 2018-10-11
使用str.extract
combined with pandas.to_datetime
:
df['Date_time'] = pd.to_datetime(df['Date_time'].str.extract('(\d{2}-\d{2}-\d{4})',
expand=False), format='%d-%m-%Y')
print(df)
# Output
ID Date_time
0 210 2016-01-01
1 205 2017-06-01
2 1504 2014-10-30
3 1544 2018-10-11