【发布时间】:2014-07-31 07:31:22
【问题描述】:
我在 pandas 中加载数据,而列 date 包含日期时间值,例如:
date ; .....more stuff ......
2000-01-03 ;
2000-01-04 ;
2000-01-06 ;
...
2000-01-31 ;
2000-02-01 ;
2000-02-02 ;
2000-02-04 ;
我有一个函数可以添加包含工作日索引 (0-6) 的列:
def genWeekdays(df,src='date',target='weekday'):
"""
bla bla bla
"""
df[target] = df[src].apply(lambda x: x.weekday())
return df
通过调用它
df = genWeekdays(df)
df 有大约一百万行,这大约需要 1.3 秒。
有什么办法可以加快这个速度吗?我对我的 i7-4770k 需要多长时间感到惊讶 :(
提前致谢
【问题讨论】:
-
因为你要传递一个 Python 函数,所以它需要很长时间也就不足为奇了。
-
你要做什么,最好显示预期的输出。
-
如果只添加列:
df[target] = df[src].apply(lambda x: x.weekday())而不创建新的df并返回它会更快吗? -
@EdChum:据我了解,这不会修改原来的
df。 @Veedrac:谢谢,是的,我明白了,但这是我发现添加包含工作日的列的唯一方法,不知道如何以不同的方式转换它。 @Jeff:有什么不清楚的地方?在我看来,我说得很清楚:我想添加一个列。此列应包含此行对应的date的工作日索引(0=星期一,6=星期日)。 -
您应该始终发布一个简单的示例,可以直接复制粘贴设置代码(例如,您的框架只是描述,而不是实际代码,这样非常清楚)。此外,您应该显示输出帧的示例代码(或者如果您不能显示它应该是什么样子)。请参阅下面的简单解决方案。
标签: python datetime pandas date-conversion weekday