是否有任何内置函数polars
或更好的方法通过定义时间分辨率(例如:天、小时、分钟)将持续时间转换为数字?
# Create a dataframe
df = pl.DataFrame(
{
"from": ["2023-01-01", "2023-01-02", "2023-01-03"],
"to": ["2023-01-04", "2023-01-05", "2023-01-06"],
}
)
# Convert to date and calculate the time difference
df = df.with_columns(
[
pl.col("from").str.strptime(pl.Date, "%Y-%m-%d").alias("from_date"),
pl.col("to").str.strptime(pl.Date, "%Y-%m-%d").alias("to_date"),
]
).with_columns((pl.col("to_date") - pl.col("from_date")).alias("time_diff"))
# Convert the time difference to int (in days)
df = df.with_columns(
((pl.col("time_diff") / (24 * 60 * 60 * 1000)).cast(pl.Int8)).alias("time_diff_int")
)
Run Code Online (Sandbox Code Playgroud)
我需要使用日期时间列获取数据集的确切季节(秋季、冬季、春季和夏季)"POSIXct" "POSIXt"
。
重要的是要考虑到季节取决于地球上的春分和至日,而且季节发生的确切时间会随着时间的推移以及纬度和经度位置而变化。因此,这并不像为所有年份的所有春分和至日定义相同的日期和时间那么简单。
下面的表格显示了多年来的这种变化:http://www.astropixels.com/ephemeris/soleq2001.html。
R 包中有没有内置函数可以实现这一点?
下面是一个起点:
# Load packages
library(lubridate)
library(dplyr)
# Create dummy df with datetime col
df <- data.frame(datetimes = seq(as.POSIXct("2016-01-01 00:00:00", tz = "UTC"),
as.POSIXct("2019-12-31 23:59:59", tz="UTC"),
by = "hour"))
# Calculate season in a fix position given by lon, lat pairs
df2 <-
df %>%
mutate(season = datetimeToExactSeason(datetimes))
Run Code Online (Sandbox Code Playgroud)