Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python - คำนวณค่าแรกของแต่ละกลุ่มใน Pandas DataFrame (groupby first)

เมธอด groupby().first() ใช้สำหรับดึงแถวแรกของแต่ละกลุ่มหลังจากจัดกลุ่มข้อมูลแล้ว ซึ่งเหมาะสำหรับการหาค่า "first occurrence" หรือรายการแรกของแต่ละประเภท

ขั้นตอนการทำงาน

1. นำเข้าไลบรารี

import pandas as pd

2. สร้าง DataFrame มีข้อมูลซ้ำในคอลัมน์ Car

dataFrame = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'BMW', 'Tesla', 'Lexus', 'Tesla'],
    "Place": ['Delhi', 'Bangalore', 'Pune', 'Punjab', 'Chandigarh', 'Mumbai'],
    "Units": [100, 150, 50, 80, 110, 90]
})

3. จัดกลุ่มตามคอลัมน์ Car และหาค่าแรก

groupDF = dataFrame.groupby("Car")
res = groupDF.first().reset_index()

โค้ดตัวอย่างสมบูรณ์

import pandas as pd

dataFrame = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'BMW', 'Tesla', 'Lexus', 'Tesla'],
    "Place": ['Delhi', 'Bangalore', 'Pune', 'Punjab', 'Chandigarh', 'Mumbai'],
    "Units": [100, 150, 50, 80, 110, 90]
})
print("DataFrame:\n", dataFrame)

# จัดกลุ่มและหาค่าแรก
groupDF = dataFrame.groupby("Car")
res = groupDF.first().reset_index()
print("\nFirst of group values:\n", res)

ผลลัพธ์

DataFrame:
      Car      Place  Units
0     BMW     Delhi    100
1   Lexus  Bangalore    150
2     BMW      Pune     50
3   Tesla    Punjab     80
4   Lexus Chandigarh    110
5   Tesla    Mumbai     90

First of group values:
      Car      Place  Units
0     BMW     Delhi    100
1   Lexus  Bangalore    150
2   Tesla    Punjab     80

คำอธิบาย

  • groupby("Car") จัดกลุ่มแถวที่มีค่า Car เหมือนกัน
  • .first() เลือกแถวแรกของแต่ละกลุ่ม (ตามลำดับเดิมใน DataFrame)
  • .reset_index() แปลง index กลับเป็นคอลัมน์ปกติ
  • คู่กับ .last() สำหรับค่าสุดท้าย และ .nth(n) สำหรับค่าลำดับที่ n

กรณีใช้งานจริง

  • หาลูกค้าครั้งแรกที่ซื้อสินค้าแต่ละประเภท
  • ดึงบันทึกแรกของแต่ละเซ็นเซอร์ใน Time-series
  • กำจัดข้อมูลซ้ำโดยเก็บเฉพาะรายการแรก