pandas 如何将时间从datetime转换为颜色Map表的字符串/数字

6ljaweal  于 2023-06-04  发布在  其他
关注(0)|答案(3)|浏览(190)

我试图根据一天中的时间绘制散点图,但我的数据是日期时间格式的。获取一天中的时间或超过00:00的时间都可以。我试图从datetime中获取时间,但我得到了以下错误。
TypeError:float()参数必须是字符串或数字,而不是'datetime.time'
理想情况下,我会有一个散点图阴影的基础上一天的时间。
我最初尝试了这个方法(也在dt.time的末尾添加了.values,看看是否有帮助。它没有)。

x = dfbelow[1:].wind_speed.values
y = above_aligned["WS"].values
plt.scatter(x, y, s=20, c=above_aligned["timestamp"].dt.time, cmap='YlOrBr')

plt.xlabel("Below Canopy Wind Speed (m/s)")
plt.ylabel("Above Canopy Wind Speed (m/s)")
plt.title("Above vs. Below Canopy Wind Speeds (m/s)")
plt.colorbar(label="Below Canopy Wind Direction")
plt.show

但可以理解的是,它不能基于日期时间形式进行着色。

jaxagkaj

jaxagkaj1#

这里有一种方法来计算经过午夜的小时数,您可以使用matplot dates模块将时间转换为数字代表并绘制它:

import matplotlib.dates as mdates

time_values = [mdates.date2num(timestamps = above_aligned["timestamp"]) % 1 for timestamp in timestamps]

# Create scatter plot with colormap based on time of day
plt.scatter(x, y, s=20, c=time_values, cmap='YlOrBr')

Matplotlib参考

bpsygsoo

bpsygsoo2#

尝试datetime.hourdatetime.timestamp()

datetime.hour返回时间的小时部分:

>>> dt = datetime.datetime.now()
>>> dt.hour
9

datetime.timestamp(),注意括号,这是一个方法,返回一个大的浮点数,从epoch开始以秒为单位:

>>> dt = datetime.datetime.now()
>>> dt.timestamp()
1685723937.569643

或者,您可以使用datetime.time()

>>> dt = datetime.datetime.now()
>>> s = dt.time()
>>> s.hour * 60 + s.minute
578  # Minutes since 00:00
svmlkihl

svmlkihl3#

我想明白了,其实很简单。而不是above_aligned[“timestamp”].dt.time,我只是使用了above_aligned[“timestamp”]. dt. hour。

相关问题