从给定日期中提取日、月和年的最快方法是什么?

2024-04-05

我将包含 150,000 行的 csv 文件读取到 pandas 数据框中。该数据框有一个字段,Date,日期为yyyy-mm-dd格式。我想从中提取月、日和年并将其复制到数据框的列中,Month, Day and Year分别。对于几百条记录,下面的两种方法可以正常工作,但是对于 150,000 条记录,执行时间都长得离谱。对于 100,000 多条记录,是否有更快的方法?

第一种方法:

df = pandas.read_csv(filename)
for i in xrange(len(df)): 
   df.loc[i,'Day'] = int(df.loc[i,'Date'].split('-')[2])

第二种方法:

df = pandas.read_csv(filename)
for i in xrange(len(df)):
   df.loc[i,'Day'] = datetime.strptime(df.loc[i,'Date'], '%Y-%m-%d').day

谢谢。


在 0.15.0 中,您将能够使用新的 .dt 访问器在语法上很好地完成此操作。

In [36]: df = DataFrame(date_range('20000101',periods=150000,freq='H'),columns=['Date'])

In [37]: df.head(5)
Out[37]: 
                 Date
0 2000-01-01 00:00:00
1 2000-01-01 01:00:00
2 2000-01-01 02:00:00
3 2000-01-01 03:00:00
4 2000-01-01 04:00:00

[5 rows x 1 columns]

In [38]: %timeit f(df)
10 loops, best of 3: 22 ms per loop

In [39]: def f(df):
    df = df.copy()
    df['Year'] = DatetimeIndex(df['Date']).year
    df['Month'] = DatetimeIndex(df['Date']).month
    df['Day'] = DatetimeIndex(df['Date']).day
    return df
   ....: 

In [40]: f(df).head()
Out[40]: 
                 Date  Year  Month  Day
0 2000-01-01 00:00:00  2000      1    1
1 2000-01-01 01:00:00  2000      1    1
2 2000-01-01 02:00:00  2000      1    1
3 2000-01-01 03:00:00  2000      1    1
4 2000-01-01 04:00:00  2000      1    1

[5 rows x 4 columns]

从 0.15.0 开始(2014 年 9 月底发布),现在可以使用新的 .dt 访问器执行以下操作:

df['Year'] = df['Date'].dt.year
df['Month'] = df['Date'].dt.month
df['Day'] = df['Date'].dt.day
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从给定日期中提取日、月和年的最快方法是什么? 的相关文章

随机推荐

  • 为嵌套的 ScriptableObjects 构建编辑器以在纸牌游戏中组合能力

    我正在构建一款纸牌游戏 我希望有一个干净的纸牌能力架构 我有一个带有卡片属性的 CardData ScriptableObject 我希望卡牌能力组合在一起来描述卡牌的作用 比如一张名为绘制和治疗卡抽 2 张牌并在玩时恢复 5 点生命值 我
  • 类型稳定性如何让 Julia 如此之快?

    我听说类型稳定性使 Julia 如此之快 同时仍然与其他解释语言 例如 Python 一样具有表达能力 类型稳定性允许编译器在编译时直接根据输入类型确定函数的输出类型 因为 Julia 专门针对每种输入类型进行编译 这意味着如果所有函数都是
  • HtmlUnit无法获取IFRAME添加的js/ajax

    我刚刚开始学习htmlunit http htmlunit sourceforge net by gargoylesoftware 我有一个问题 页面上有一个 iframe 单击按钮后会出现该 iframe 当我尝试按名称获取此 ifram
  • 使用 MockMVC 测试 Spring MVC 请求参数映射和 MultipartFile

    我正在尝试使用 Spring MVC 3 2 创建一个 RESTful 控制器端点来上传文件以及该文件的元数据映射 定义如下 Controller RequestMapping file public class FileServiceCo
  • 如何在scala中使用相对路径读取文本文件

    我有一个用 scala 编写的简单 mvn 项目 我想访问一个文本文件并读取其内容 该代码工作正常 但唯一的问题是我在读取文本文件时给出了绝对路径 以下是我的项目的目录结构 如何使用相对路径来读取该文件 我是否必须将 movie txt 文
  • Service 或 IntentService 或 AlarmManager 方法

    我正在构建一个类似游戏的应用程序 并且我一直在阅读有关在后台 前台 警报等中使用服务运行事物的所有不同方法 我有点困惑 我的应用程序会像这样 示例 用户按下 Main 中的按钮 然后他可以关闭应用程序 30 分钟后 Activity1 打开
  • Azure JWT 具有属性“hasgroups=true”而不是组属性对象

    我有一个带有 Azure Active Directory 身份验证的 Azure Web 应用程序 使用 adal Angular 制作 在我设置的应用程序清单中 groupMembershipClaims SecurityGroup 奇
  • Neo4j:传统索引和自动索引与新标签库模式索引

    我目前正在寻找索引数据的最佳方法 从我的角度来看 有以下三个选项 1 遗留索引 索引管理器 API 2 自动索引 neo4j properties node auto indexing true ode keys indexable nam
  • 如何使用 Head 和 Tail 打印文件的特定行

    我想说输出文件的第 5 10 行 作为传入的参数 我怎样才能使用head and tail去做这个 where firstline 2 and lastline 3 and filename 1 运行它应该如下所示 lines sh fil
  • RNetlogo 和 NetLogo 5.3 错误

    我一直在 NetLogo 5 2 1 中使用 RNetLogo 没有出现任何问题 现在我使用 NetLogo 5 3 并收到此错误 gt library RNetLogo gt nl path lt Applications NetLogo
  • 行计数 C++

    我正在处理程序中的逻辑行数 省略注释和黑线 计数线正在工作 但我不知道如何省略注释行 我尝试 if line comment 但它只检查以以下开头的行 如果旁边有文本 则不会将其视为注释行 最后当我知道总行数和总注释行数时 我会减去tota
  • FBSDKLoginManager logInWithPublishPermissions 始终返回 isCancelled=YES

    我无法弄清楚如何让用户登录我的应用程序 FBSDKAccessToken currentAccessToken 为零 所以我打电话 FBSDKLoginManager alloc init logInWithPublishPermissio
  • 任何自动更新页面所有帖子时间的 jquery 插件

    我有一个页面 其中有很多帖子 显示它们发布的时间 我想每 1 分钟后继续更新该时间 一种简单的方法可以给它们一个相同的类 并在 1 分钟后获取所有元素并更新时间 有什么更好的解决方案 您可以使用像这样的简单插件 fn UpdateSince
  • 基数排序如何工作?

    我不知道为什么这对我来说如此难以理解 我浏览了 wiki 页面和伪代码 以及实际代码 试图了解基数排序算法的工作原理 相对于存储桶 我在这里寻找错误的东西吗 我应该研究桶排序吗 有人能给我一个简化版本的工作原理吗 作为参考 这里是一个代码块
  • 当 ListView 项可见或不可见时获取事件

    我想知道 ListView 中的视图是否有某种 OnVisibilyChangeListener 因为我希望每次 ListView 项更改其可见性时都调用一个方法 我知道 OnPreDrawListener 来检查视图是否可见 但是我如何检
  • 如何在ansible中为变量分配随机数?

    这是一个 ansible 脚本 我希望它能打印出相同的随机数 3 次 相反 它打印出三个随机数 如何将随机数分配给 ansible 中的变量 以便它在整个剧本中固定 name Test random filter hosts localho
  • 为什么“this.setState”不起作用?

    我正在从 API 端点获取 JSON 数据 并希望使用此数据来显示表格 这是我目前正在尝试的 var DeliveryOptionsTHeadTh React createClass render function return th th
  • 焦点问题集中在表单加载上

    我有一个 ActiveX 控件 可能是用 VB 6 0 或 C 编写的 我们在 C WinForms 程序中将其用作 AxInterop 它非常像一个文本框 但具有一些特殊的逻辑等 我们已将其添加到工具栏 当表单加载时 我希望键盘焦点位于该
  • 传输安全已阻止明文 HTTP

    我需要在我的info plist根据以下错误消息启用 HTTP 模式 传输安全已阻止明文 HTTP http 资源 加载 因为它不安全 可以通过以下方式配置临时例外 您应用程序的 Info plist 文件 假设我的域名是example c
  • 从给定日期中提取日、月和年的最快方法是什么?

    我将包含 150 000 行的 csv 文件读取到 pandas 数据框中 该数据框有一个字段 Date 日期为yyyy mm dd格式 我想从中提取月 日和年并将其复制到数据框的列中 Month Day and Year分别 对于几百条记