pandas - 如何使用 map 和 lambda 函数将 pandas 中的列转换为日期时间?
问题描述
我有一列的时间像 9:3:15(没有前导 0)(9 点后 3 分 15 秒)。我想在 x 轴上绘制这个(没有日期,只是时间)。所以我尝试了以下代码:
def data_vis(dayN):
plt.subplots_adjust(bottom=0.2)
plt.xticks( rotation=25 )
ax=plt.gca()
#ax.xaxis_date()
xfmt = md.DateFormatter('%H:%MM:%S')
ax.xaxis.set_major_formatter(xfmt)
plt.plot_date(md.date2num(dayN["Time Stamp"]),dayN["Temperature(deg C)"])
plt.show()
我收到以下错误:
DateFormatter 发现 x=0 的值,是非法日期;这通常是因为您没有通知轴它正在绘制日期,例如使用 ax.xaxis_date()
启用后ax.xaxis_date()
,我收到以下错误。
“str”对象没有属性“toordinal”
由于该列是“str”,我想使用
pd.to_datetime(day2["Time Stamp"], format = '%H:%M:%S)
但它会导致以下输出:
1900-01-01 09:51:33
现在我想尝试datetime.datetime.strptime
对上述列使用 map 和/或 lambda 函数。
关于地图功能的实现和绘制数据的任何帮助都会非常有帮助。还datetime.strptime
有助于解决问题吗?
谢谢,
解决方案
不知道这里出了什么问题;以下对我来说很好:
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.dates as md
# create a dummy df...
dayN = pd.DataFrame({"Temperature(deg C)": np.random.rand(10)+20,
"Time Stamp": ['9:3:15','9:3:16','9:3:17','9:3:18','9:3:19',
'9:3:20','9:3:21','9:3:22','9:3:23','9:3:24']})
# format to datetime, don't care about the date:
dayN["Time Stamp"] = pd.to_datetime(dayN["Time Stamp"], format='%H:%M:%S')
plt.subplots_adjust(bottom=0.2)
plt.xticks(rotation=25)
ax = plt.gca()
xfmt = md.DateFormatter('%H:%M:%S')
ax.xaxis.set_major_formatter(xfmt)
plt.plot_date(md.date2num(dayN["Time Stamp"]), dayN["Temperature(deg C)"])
plt.show()
推荐阅读
- php - 我想使用 docusign 在我的 Web 应用程序上签名文档
- quickfixj - gradle 无法解析:org.quickfixj:quickfixj-core
- python - 使用数据库包执行功能获取整行
- google-bigquery - 根据另一列中的值更新 BigQuery 中的嵌套数组
- mongodb - 如何在 MongoDB 中编写请求
- python - 使用 pip install 安装 tensorflow 时出错
- postgresql - jsonb文本搜索索引
- java - 如何在 spring junit 测试中禁用日志记录(错误除外)?
- angular - 无法使用角度访问属性
- react-native - 如何在 React Native iOS 中显示 webp 图像?