所以我用pandas打开了.csv格式的数据。我现在想将日期从当前的dd / mm / YYYY hh:mm:ss格式重新格式化为纯粹的YYYY-mm-dd格式,例如,从19/11/2014 15:26:13到2014-11- 19。我将如何在pandas数据数组中执行此操作?即转换自:
Id User Id Start Time End Time Climb Time
0 74618 27366 19/11/2014 15:26:13 19/11/2014 15:26:18 5
1 74632 27366 19/11/2014 15:26:18 19/11/2014 15:42:26 968
2 74633 27366 19/11/2014 15:42:26 19/11/2014 15:42:48 22
对此:
Id User Id Start Time End Time Climb Time
0 74618 27366 2014-11-19 2014-11-19 5
1 74632 27366 2014-11-19 2014-11-19 968
2 74633 27366 2014-11-19 2014-11-19 22
我已经尝试了另一种pandas就绪方法,但似乎没有一种方法可以工作或识别初始数据。我想知道是否有人知道任何可以实现这一目标的方法......
答案 0 :(得分:1)
试试这个:
pd.to_datetime(df['Start Time']).dt.date
或者如果您希望列类型为字符串:
pd.to_datetime(df.StartTime).dt.strftime('%Y-%m-%d')
答案 1 :(得分:1)
让我试一试,看看它是不是你要找的东西。
输入CSV就像这样(我在本例中称之为test.csv)
Id,User Id,Start Time,End Time,Climb Time
74618,27366,19/11/2014 15:26:13,19/11/2014 15:26:18,5
74632,27366,19/11/2014 15:26:18,19/11/2014 15:42:26,968
74633,27366,19/11/2014 15:42:26,19/11/2014 15:42:48,22
现在来自iPython的一些输入/输出。
In [1]: import pandas as pd
In [2]: df = pd.read_csv('test.csv')
我们可以看一下转换到日期时间。注意我们最后得到的“类型”。
In [5]: pd.to_datetime(df['Start Time'])
Out[5]:
0 2014-11-19 15:26:13
1 2014-11-19 15:26:18
2 2014-11-19 15:42:26
Name: Start Time, dtype: datetime64[ns]
现在您可以将其保存回新列。在获取日期和时间部分方面,to_datetime非常聪明。如果日期错误,您可以使用format key-word
指定输入日期时间的格式df['start_dt'] = pd.to_datetime(df['Start Time'])
最后,您可以检查数据框中列的dtypes:
In [9]: df.dtypes
Out[9]:
Id int64
User Id int64
Start Time object
End Time object
Climb Time int64
start_dt datetime64[ns]
dtype: object
现在这个新列,它是一个日期时间对象,您可以以任何方式显示或排序它。从您的OP,似乎您只想获得日期部分。这很简单,你可以这样做(来自this post)
In [10]: df['start_dt'].dt.date
Out[10]:
0 2014-11-19
1 2014-11-19
2 2014-11-19
Name: start_dt, dtype: object
现在我们可以将所有这些放在一起并进行转换,然后将其作为日期放在一行中。看来你想要回收列名,所以我在这里做,但没有必要。您可以为“新”列指定任何名称。
In [13]: df['Start Time'] = pd.to_datetime(df['Start Time']).dt.date
In [14]: df['End Time'] = pd.to_datetime(df['End Time']).dt.date
In [15]: df
Out[15]:
Id User Id Start Time End Time Climb Time start_dt
0 74618 27366 2014-11-19 2014-11-19 5 2014-11-19
1 74632 27366 2014-11-19 2014-11-19 968 2014-11-19
2 74633 27366 2014-11-19 2014-11-19 22 2014-11-19
我认为结果就是你要找的东西。