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 中按索引选择行