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

标签 python pandas

嗨,我有一个来自 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 来进行比较。 像下面这样的东西在值上工作正常

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/

相关文章:

python - ForeignKey 和扩展 Django 中的 User 类/模型之间的区别

python - Groupby 应用多个参数

python - 如何使用 Twitter API 检查用户/密码是否有效?

Python Win 3.6.0 x64 问题,在 pip3 安装 pyqt5 后缺少 qt designer exe

python - 有条件地在数据框中填充一个值

python - 每组缺失值的 Pandas 插补

python - 根据条件设置具有相同编号的计数器或行

python - 计算 DataFrame 列中标点符号的数量

python - 来自时间序列数据框的 matplotlib

python - pandas 情节时间序列-出现奇怪的线