如何在熊猫中将字符串日期转换为数字[重复]
Posted
技术标签:
【中文标题】如何在熊猫中将字符串日期转换为数字[重复]【英文标题】:How to convert string date to numeric in pandas [duplicate] 【发布时间】:2019-07-25 13:57:25 【问题描述】:我已经使用以下命令读取了一个 csv 文件:
df=df.read_csv("path",parse_dates=[['Local Date', 'Local Time']])
我有以下输出:
created_at Close Open Volume Day
0 01-Mar-2019 00:47 25916.00 25916.00 141383 STABLE
1 01-Mar-2019 00:21 25916.00 25916.00 1 STABLE
2 01-Mar-2019 00:20 25916.00 25916.00 74 STABLE
3 01-Mar-2019 00:19 25916.00 25916.00 222 STABLE
4 01-Mar-2019 00:18 25916.00 25916.00 108257 STABLE
... ... ... ... ... ...
我想按以下方式转换“created_at”列:
created_at Close Open Volume Day
0 01-03-2019 00:47 25916.00 25916.00 141383 STABLE
1 01-03-2019 00:21 25916.00 25916.00 1 STABLE
2 01-03-2019 00:20 25916.00 25916.00 74 STABLE
3 01-03-2019 00:19 25916.00 25916.00 222 STABLE
4 01-03-2019 00:18 25916.00 25916.00 108257 STABLE
... ... ... ... ... ...
我想将“字母”形式的月份“转换”为“数字”形式。
Csv file
【问题讨论】:
到目前为止您尝试了哪些方法,您遇到了哪些问题? 我尝试使用:df.created_at.str.replace("Mar",03)
它有效,但如果我想每个月都这样做,我会说它不是很有效:/
所以如果parse_dates=['created_at'])
不工作?
@jezrael 我不确定parse_dates=['created_at'])
是什么意思创建的列已经在 parse_dates 中
@stefan - 那么原始数据是什么,df=df.read_csv("path",parse_dates=[['Local Date', 'Local Time']])
之前的前 5 行?
【参考方案1】:
只是为了测试尝试将您的列 created_at
转换为 pd.to_datetime
数据帧
>>> df
created_at
0 01-Mar-2019 00:47
1 01-Mar-2019 00:21
2 01-Mar-2019 00:20
结果:
>>> pd.to_datetime(df['created_at'])
0 2019-03-01 00:47:00
1 2019-03-01 00:21:00
2 2019-03-01 00:20:00
Name: created_at, dtype: datetime64[ns]
出于好奇,正如评论中提到的,这可以直接更改为数据框,如下所示:
df['created_at'] = pd.to_datetime(df['created_at'])
【讨论】:
感谢您的回答,但不幸的是代码可以工作,但绝对没有任何变化 @stefan,如果答案帮助您将此标记为已接受答案help is here to get it :-)【参考方案2】:试试这个
df['dt2'] = pd.to_datetime(df.created_at).dt.strftime('%d-%m-%Y %H:%M')
首先它将字符串转换为日期,然后将其转换为所需格式的字符串。
【讨论】:
以上是关于如何在熊猫中将字符串日期转换为数字[重复]的主要内容,如果未能解决你的问题,请参考以下文章