将pandas dataframe中的多个列更改为datetime

时间:2017-01-06 20:54:17

标签: python datetime pandas

我有一个13列和55,000行的数据帧我试图将其中5行转换为datetime,现在他们返回类型'object'我需要转换这些数据用于机器学习我知道如果我做

data['birth_date'] = pd.to_datetime(data[birth_date], errors ='coerce')

它会返回一个日期时间列,但是我也希望为其他4个列执行此操作,是否有一行我可以编写来调用所有这些列?我不认为我可以索引像

data[:,7:12]

谢谢!

6 个答案:

答案 0 :(得分:28)

您可以使用db.execSQL("UPDATE " + TBNAME + " SET " + AGE + " = " + AGE + " + 1", null); 使用apply

遍历每列
pd.to_datetime

答案 1 :(得分:10)

如果性能受到关注,我建议使用以下函数将这些列转换为date_time:

def lookup(s):
    """
    This is an extremely fast approach to datetime parsing.
    For large data, the same dates are often repeated. Rather than
    re-parse these, we store all unique dates, parse them, and
    use a lookup to convert all dates.
    """
    dates = {date:pd.to_datetime(date) for date in s.unique()}
    return s.apply(lambda v: dates[v])

to_datetime: 5799 ms
dateutil:    5162 ms
strptime:    1651 ms
manual:       242 ms
lookup:        32 ms

来源: https://github.com/sanand0/benchmarks/tree/master/date-parse

答案 2 :(得分:9)

my_df[['column1','column2']] =     
my_df[['column1','column2']].apply(pd.to_datetime, format='%Y-%m-%d %H:%M:%S.%f')

注意:当然可以根据需要更改格式。

答案 3 :(得分:1)

首先,您需要从data中提取您感兴趣的所有列,然后您可以使用pandas applymapto_datetime应用于提取帧中的每个元素,我假设您知道要提取的列的索引,在下面的代码中提取第三列到第十六列的列名。您也可以定义一个列表并向其添加列的名称并使用它们,您可能还需要传递DateTime条目的日期/时间格式

import pandas as pd

cols_2_extract = data.columns[2:15]

data[cols_2_extract] = data[cols_2_extract].applymap(lambda x : pd.to_datetime(x, format = '%d %M %Y'))

答案 4 :(得分:1)

如果你想在加载时转换,你可以做这样的事情

date_columns = ['c1','c2', 'c3', 'c4', 'c5']
data = pd.read_csv('file_to_read.csv', parse_dates=date_columns)

答案 5 :(得分:-2)

data.iloc[:, 7:12]=data.iloc[:, 7:12].astype('datetime64[ns]')