gpt4 book ai didi

python - 如何计算 pandas 中 n 列而不是行之间的差异

转载 作者:太空狗 更新时间:2023-10-30 02:10:34 25 4
gpt4 key购买 nike

我正在处理数据,需要查看相当大的数据框中各列(以及行)之间的差异。行的最简单方法显然是 diff() 方法,但我找不到列的等效方法?

我当前的解决方案是获取列因 via 而异的数据框


df.transpose().diff().transpose()

有没有更有效的替代方案?还是 pandas 的这种奇怪用法以至于从来没有被要求/被认为有用? :)

谢谢,

最佳答案

Pandas DataFrames 非常适合处理其列具有不同数据类型的类似表格的数据。

如果跨列和跨行相减都有意义,那么这意味着所有值都是相同的种类数量。这可能表明您应该使用 NumPy 数组而不是 Pandas DataFrame。

在任何情况下,您都可以使用 arr = df.values 从 DataFrame 中提取底层数据的 NumPy 数组。如果所有列共享相同的数据类型,则 NumPy 数组将具有相同的数据类型。 (当列具有不同的 dtype 时,df.values 具有 object dtype)。

然后您可以使用 np.diff(arr, axis=...) 计算沿行或列的差异:

import numpy as np
import pandas as pd

df = pd.DataFrame(np.arange(12).reshape(3,4), columns=list('ABCD'))
# A B C D
# 0 0 1 2 3
# 1 4 5 6 7
# 2 8 9 10 11

np.diff(df.values, axis=0) # difference of the rows
# array([[4, 4, 4, 4],
# [4, 4, 4, 4]])

np.diff(df.values, axis=1) # difference of the columns
# array([[1, 1, 1],
# [1, 1, 1],
# [1, 1, 1]])

关于python - 如何计算 pandas 中 n 列而不是行之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29218398/

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