สมมติว่าคุณต้องการสร้าง DataFrame 10 แถว 2 คอลัมน์ จากสระเสียง (a, e, i, o, u) แบบสุ่ม แล้วหาแถวที่คอลัมน์ทั้งสองมีค่าเท่ากัน
วิธีแก้ปัญหา
- สร้าง DataFrame ด้วย
np.random.choice()สุ่มสระเสียง 10 ค่าต่อคอลัมน์ - ใช้
np.where(df.col1 == df.col2)หา index ที่ค่าตรงกัน - ใช้
df.iloc[...]ดึงแถวที่ตรงกัน และlen()นับจำนวน
ตัวอย่างโค้ด
import pandas as pd
import numpy as np
np.random.seed(42) # เพื่อ reproducibility
df = pd.DataFrame({'col1': np.random.choice(['a', 'e', 'i', 'o', 'u'], 10),
'col2': np.random.choice(['a', 'e', 'i', 'o', 'u'], 10)})
print("DataFrame สระเสียงสุ่ม:\n", df)
# หาแถวที่ col1 == col2
matched = df.iloc[np.where(df.col1 == df.col2)]
print("\nแถวที่คอลัมน์ทั้งสองตรงกัน:")
print(matched)
print("\nจำนวนแถวที่ตรงกัน:", len(matched))
ผลลัพธ์ตัวอย่าง
DataFrame สระเสียงสุ่ม:
col1 col2
0 o e
1 e e
2 i u
3 e o
4 i i
5 u o
6 e a
7 u o
8 a u
9 e a
แถวที่คอลัมน์ทั้งสองตรงกัน:
col1 col2
1 e e
4 i i
จำนวนแถวที่ตรงกัน: 2
คำอธิบาย:
np.random.choice(['a','e','i','o','u'], 10)สุ่ม 10 ค่าจาก list สระเสียงnp.where(condition)คืนค่า tuple ของ indices ที่เงื่อนไขเป็นจริงdf.iloc[indices]ดึงแถวตาม indices ที่ได้- วิธีนี้ใช้ได้กับการเปรียบเทียบคอลัมน์ใดๆ ที่มี dtype ตรงกัน