Pandas:如何找到两条线之间的差异


您可以使用DataFrame.diff()函数来查找 pandas DataFrame 中两行之间的差异。

该函数使用以下语法:

DataFrame.diff(周期=1,轴=0)

金子:

  • period:计算差异的前几行的数量。
  • 轴:查找行 (0) 或列 (1) 上的差异。

以下示例展示了如何在实践中使用此功能。

示例 1:查找前一行之间的差异

假设我们有以下 pandas DataFrame:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' period ': [1, 2, 3, 4, 5, 6, 7, 8],
                   ' sales ': [12, 14, 15, 15, 18, 20, 19, 24],
                   ' returns ': [2, 2, 3, 3, 5, 4, 4, 6]})

#view DataFrame
df

	period sales returns
0 1 12 2
1 2 14 2
2 3 15 3
3 4 15 3
4 5 18 5
5 6 20 4
6 7 19 4
7 8 24 6

以下代码演示了如何查找 DataFrame 的每个当前行与上一行之间的差异:

 #add new column to represent sales differences between each row
df[' sales_diff '] = df[' sales ']. diff ()

#view DataFrame
df

        period sales returns sales_diff
0 1 12 2 NaN
1 2 14 2 2.0
2 3 15 3 1.0
3 4 15 3 0.0
4 5 18 5 3.0
5 6 20 4 2.0
6 7 19 4 -1.0
7 8 24 6 5.0

请注意,我们还可以找到前面几行之间的差异。例如,以下代码显示如何查找每个当前行与前三行出现的行之间的差异:

 #add new column to represent sales differences between current row and 3 rows earlier
df[' sales_diff '] = df[' sales ']. diff (periods= 3 )

#view DataFrame
df

        period sales returns sales_diff
0 1 12 2 NaN
1 2 14 2 NaN
2 3 15 3 NaN
3 4 15 3 3.0
4 5 18 5 4.0
5 6 20 4 5.0
6 7 19 4 4.0
7 8 24 6 6.0

示例2:根据条件求差

我们还可以过滤 DataFrame 以显示当前行与前一行之间的差异小于或大于某个值的行。

例如,以下代码仅返回当前行的值小于前一行的值的行:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' period ': [1, 2, 3, 4, 5, 6, 7, 8],
                   ' sales ': [12, 14, 15, 13, 18, 20, 19, 24],
                   ' returns ': [2, 2, 3, 3, 5, 4, 4, 6]})

#find difference between each current row and the previous row
df[' sales_diff '] = df[' sales ']. diff ()

#filter for rows where difference is less than zero
df = df[df[' sales_diff ']< 0 ]

#view DataFrame
df

        period sales returns sales_diff
3 4 13 3 -2.0
6 7 19 4 -1.0

其他资源

如何在Pandas中查找多列中的唯一值
如何按列值过滤 Pandas DataFrame
如何在 Pandas DataFrame 中按索引选择行

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注