gpt4 book ai didi

python - 获取 Pandas DataFrame 中行之间的差异值

转载 作者:太空宇宙 更新时间:2023-11-04 01:16:51 25 4
gpt4 key购买 nike

嗨,我有一个来自 psycopg2 的结果集,就像这样

(
(timestamp1, val11, val12, val13, val14),
(timestamp2, val21, val22, val23, val24),
(timestamp3, val31, val32, val33, val34),
(timestamp4, val41, val42, val43, val44),
)

我必须返回行值之间的差异(时间戳列除外)。每行将减去前一行的值。第一行是

时间戳,'NaN','NaN' ....

然后必须将其作为通用对象返回即类似于以下对象的数组

Group(timestamp=timestamp, rows=[val11, val12, val13, val14]

我打算使用 Pandas 来进行比较。像下面这样的东西在值(value)观上工作正常

df = DataFrame().from_records(data=results, columns=headers)
diffs = df.set_index('time', drop=False).diff()

但是 diff 也会在时间戳列上执行,我无法让它忽略一个列保留原始时间戳列。

我也不确定将数据转换成我的返回格式是否有效正如 Pandas 建议不要进行行访问

有什么方法可以快速获得所需输出格式的结果集差异?

最佳答案

为什么要设置 drop=False?这会将时间戳放入索引中(它们不会被 diff 触及),但也会将时间戳的副本保留为适当的列,以供 diff 处理。

我想这会做你想做的:

diffs = df.set_index('time').diff().reset_index()

既然您提到了 psycopg2,请查看几天前发布的 pandas 0.14 文档,它改进了 SQL 功能,包括对 postgresql 的新支持。您可以直接在数据库和 pandas DataFrames 之间读写。

关于python - 获取 Pandas DataFrame 中行之间的差异值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23997281/

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