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

เขียนโปรแกรม Python แทนค่าเส้นทแยงมุมของ DataFrame ด้วย 1

สมมติว่าคุณมี DataFrame สี่เหลี่ยมจัตุรัส (square) และต้องการแทนค่าเส้นทแยงมุม (diagonal) ด้วยค่า 1

วิธีแก้ปัญหา

  1. สร้าง DataFrame สี่เหลี่ยมจัตุรัส
  2. ใช้ nested loop วนลูป i, j ตรวจสอบ if i == j (ตำแหน่งเส้นทแยงมุม)
  3. แทนค่าด้วย df.iloc[i, j] = 1

ตัวอย่างโค้ด

import pandas as pd
import numpy as np

data = [[10, 20, 30], [40, 50, 60], [70, 80, 90]]
df = pd.DataFrame(data)

print("DataFrame ต้นฉบับ:\n", df)

# แทนค่าเส้นทแยงมุมเป็น 1
for i in range(len(df)):
    for j in range(len(df)):
        if i == j:
            df.iloc[i, j] = 1

print("\nDataFrame หลังแทนค่าเส้นทแยงมุม:")
print(df)

ผลลัพธ์

DataFrame ต้นฉบับ:
    0   1   2
0  10  20  30
1  40  50  60
2  70  80  90

DataFrame หลังแทนค่าเส้นทแยงมุม:
   0   1   2
0  1  20  30
1  40   1  60
2  70  80   1

คำอธิบาย:

  • เส้นทแยงมุม (main diagonal) คือตำแหน่งที่ row index == column index (i == j)
  • ใช้ iloc[i, j] เข้าถึงและแก้ไขค่าโดย integer position
  • วิธีที่เร็วกว่าสำหรับ DataFrame ใหญ่: ใช้ numpy np.fill_diagonal(df.values, 1)
  • หากต้องการแทนค่า anti-diagonal (มุมตรงข้าม): if i + j == len(df) - 1