นุ่น: วิธีค้นหาความแตกต่างระหว่างสองบรรทัด


คุณสามารถใช้ฟังก์ชัน DataFrame.diff() เพื่อค้นหาความแตกต่างระหว่างสองแถวใน DataFrame ของ pandas

ฟังก์ชันนี้ใช้ไวยากรณ์ต่อไปนี้:

DataFrame.diff(จุด=1, แกน=0)

ทอง:

  • ระยะเวลา: จำนวนบรรทัดก่อนหน้าเพื่อคำนวณความแตกต่าง
  • แกน: ค้นหาความแตกต่างในแถว (0) หรือคอลัมน์ (1)

ตัวอย่างต่อไปนี้แสดงวิธีใช้ฟังก์ชันนี้ในทางปฏิบัติ

ตัวอย่างที่ 1: ค้นหาความแตกต่างระหว่างแต่ละแถวก่อนหน้า

สมมติว่าเรามี 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

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *