我可以轻松地将字符串转换为pandas中的日期,如此处所示......
df.date = pd.to_datetime(df.date, format="%m/%d/%Y")
在dask中似乎没有简单的方法吗?
以下是适用于日期的pandas示例:
import pandas as pd
url="http://web.mta.info/developers/data/nyct/turnstile/turnstile_170128.txt"
df=pd.read_csv(url)
df.info()
df.columns=['ca', 'unit', 'scp', 'station', 'inename', 'division', 'date', 'time', 'desc', 'entries', 'exits']
df.date = pd.to_datetime(df.date, format="%m/%d/%Y")
这是dask工作但不能转换字符串:
link = 'http://web.mta.info/developers/'
data = ['data/nyct/turnstile/turnstile_170128.txt',
'data/nyct/turnstile/turnstile_170121.txt',
'data/nyct/turnstile/turnstile_170114.txt',
'data/nyct/turnstile/turnstile_170107.txt'
]
urls=[]
for i in data:
urls.append(link+i)
import pandas as pd
import dask
import dask.dataframe as dd
ddfs = [dask.delayed(pd.read_csv)(url) for url in urls]
ddf = dd.from_delayed(ddfs)
ddf.columns=['ca', 'unit', 'scp', 'station', 'inename', 'division', 'date', 'time', 'desc', 'entries', 'exits']
如何将字符串转换为日期?
答案 0 :(得分:3)
这已被添加到Dask dataframe
dd.to_datetime(...)
parse_dates=
关键字pd.read_csv
ddfs = [dask.delayed(pd.read_csv)(url, parse_dates=['DATE']) for url in urls]
或者您甚至可以将原始数据中的DATE和TIME列合并为一列
ddfs = [dask.delayed(pd.read_csv)(url, parse_dates={'DATETIME': ['DATE', 'TIME']}) for url in urls]
如果您的数据框包含对象dtype列,则可以始终使用map_partitions将pandas函数应用于每个分区。您还应该为地图分区提供预期的输出类型。
ddf['date'] = ddf['date'].map_partitions(pd.to_datetime, format='%m/%d/%Y',
meta=('date', 'M8[ns]'))
这通常是覆盖没有dask.dataframe API的Pandas功能的好方法。