gpt4 book ai didi

python - 同时从两列中减去值( Pandas , python )

转载 作者:行者123 更新时间:2023-12-05 04:26:52 28 4
gpt4 key购买 nike

我有一个 pandas dataFrame,其中包含 3 列天气数据 - 温度、时间和气象站名称。

看起来像这样:

<表类="s-表"><头>时间站名温度<正文>2022-05-12 22:09:35+00:00station_a18.32022-05-12 22:09:42+00:00station_b18.0

我想计算 station_a 与 station_b 在同一分钟的温差(因为时间戳不完全相等,但在分钟级别精确(并且每 10 分钟只有一次测量)在新列中。

有办法吗?

最佳答案

您可以使用 merge_asof在两个子数据帧上:

df['Time'] = pd.to_datetime(df['Time'])

out = (pd
.merge_asof(df[df['Station_name'].eq('station_a')],
df[df['Station_name'].eq('station_b')],
on='Time', direction='nearest',
tolerance=pd.Timedelta('1min'),
suffixes=('_a', '_b')
)
.set_index('Time')
.eval('diff = Temperature_b - Temperature_a')
['diff']
)

输出:

Time
2022-05-12 22:09:35+00:00 -0.3
Name: diff, dtype: float64

您也可以尝试四舍五入,但是如果一个时间向上舍入而另一个向下舍入则风险更大:

df['Time'] = pd.to_datetime(df['Time'])

(df
.assign(Time=df['Time'].dt.round('10min'))
.pivot('Time', 'Station_name', 'Temperature')
.eval('diff = station_b - station_a')
)

输出:

Station_name               station_a  station_b  diff
Time
2022-05-12 22:10:00+00:00 18.3 18.0 -0.3

关于python - 同时从两列中减去值( Pandas , python ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72920875/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com