我有一个13列和55,000行的数据帧我试图将其中5行转换为datetime,现在他们返回类型'object'我需要转换这些数据用于机器学习我知道如果我做
data['birth_date'] = pd.to_datetime(data[birth_date], errors ='coerce')
它会返回一个日期时间列,但是我也希望为其他4个列执行此操作,是否有一行我可以编写来调用所有这些列?我不认为我可以索引像
data[:,7:12]
谢谢!
答案 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 applymap
将to_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]')