Python中文
首页
教程
问答
标签
搜索
登录
注册
在pandas/python中高效解析时间格式
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一个如下的数据帧</p> <pre><code>+-----------+------+--------------+ | invoiceNo | time | invoiceValue | +-----------+------+--------------+ | A | 6 | 2 | +-----------+------+--------------+ | B | 12 | 3 | +-----------+------+--------------+ | C | 356 | 5 | +-----------+------+--------------+ | D | 2145 | 6 | +-----------+------+--------------+ df = pd.DataFrame({'invoiceNo':['A','B','C','D'], 'time':[6,12,356,2145], 'invoiceValue':[2,3,5,6] }) </code></pre> <p>我的任务是从<code>time</code>值中提取相应的<code>hour</code></p> <p>然而,问题是,理想情况下,<code>time</code>列应该显示<code>4</code>位。但是,由于数字格式的原因,它去掉了前导零。因此,这里的<code>6</code>表示<code>0006</code>,即<code>00 hour</code>&<code>06 minutes</code></p> <p>为了实现这一点,我编写了下面的代码,它工作得非常好</p> <pre><code>df['adj-time'] = df['time'].apply(lambda x: '{0:0>4}'.format(x)) df['adj-time'] = df['adj-time'].apply(lambda x: pd.to_datetime(x,format= '%H%M')) df['hour'] = df['adj-time'].apply(lambda x: x.hour) df.drop('adj-time',axis=1, inplace=True) </code></pre> <p>下面是我想要的输出</p> <pre><code>+-----------+------+--------------+------+ | invoiceNo | time | invoiceValue | hour | +-----------+------+--------------+------+ | A | 6 | 2 | 0 | +-----------+------+--------------+------+ | B | 12 | 3 | 0 | +-----------+------+--------------+------+ | C | 356 | 5 | 3 | +-----------+------+--------------+------+ | D | 2145 | 6 | 21 | +-----------+------+--------------+------+ </code></pre> <p>然而,我的问题是,对于大型数据集,上面的代码是<code>very very slow</code>和<code>time consuming</code></p> <p>如何提高性能/速度方面的效率</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>如果时间是整数,则:</p> <pre><code>hour = int(time/100) </code></pre> <p>如果是字符串:</p> <pre><code>hour = int(int(time)/100) </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
从Django temp访问容器的方法
7 回答
从Django temp请求ModelForm实例
1 回答
从Django temp返回JSON
1 回答
从Django timesince模板等效项中删除尾部数据
6 回答
从Django timesin删除尾随数据
8 回答
从Django UpdateView模板下载文件
3 回答
从Django url传递“start”会出现错误“start()只接受2个参数(给定1个)”
1 回答
从Django url运行的websockets错误:RuntimeError:线程“Dummy1”中没有当前事件循环
7 回答
从Django user mod获取用户全名
1 回答
从Django UserCreateForm中删除帮助文本
5 回答
从Django values()获取外键值
3 回答
从Django vi中的按钮获取click事件
2 回答
从Django vi从HttpResponse检索JSON
7 回答
从Django vi以json形式返回的数据中检索元素
4 回答
从Django vi取消或取消eventlet中的芹菜任务
2 回答
从Django vi启动多核后台进程
9 回答
从Django vi开始
5 回答
从Django Vi构建HTML
8 回答
从Django vi访问进程数据
6 回答
从Django vi调用pysnmp发送超时
5 回答