สมมติว่าคุณมี DataFrame และต้องการเลื่อนคอลัมน์แรกไปขวา 1 ตำแหน่ง (shift axis=1) แล้วรับค่าจากผู้ใช้ ถ้าค่าที่ป้อนหาร 3 และ 5 ลงตัว ให้ใช้ค่านั้นเติมค่าที่ขาดหายไป (NaN)
วิธีแก้ปัญหา
- สร้าง DataFrame
- ใช้
df.shift(periods=1, axis=1)เลื่อนคอลัมน์ไปขวา 1 ช่อง - รับค่าจากผู้ใช้ ตรวจสอบหาร 3 และ 5 ลงตัว
- ถ้าผ่าน ใช้
fill_valueใน shift() ถ้าไม่ผ่าน ไม่เติม (เหลือ NaN)
ตัวอย่างโค้ด
import pandas as pd
data = pd.DataFrame({'one': [1, 2, 3],
'two': [10, 20, 30],
'three': [100, 200, 300]})
print("DataFrame ต้นฉบับ:\n", data)
user_input = int(input("ป้อนค่า: "))
if user_input % 3 == 0 and user_input % 5 == 0:
# หาร 3 และ 5 ลงตัว -> ใช้ fill_value
result = data.shift(periods=1, axis=1, fill_value=user_input)
else:
# ไม่ผ่าน -> เหลือ NaN
result = data.shift(periods=1, axis=1)
print("\nผลลัพธ์:")
print(result)
ผลลัพธ์ตัวอย่าง (ป้อน 15)
ป้อนค่า: 15
one two three
0 15.0 1 10.0
1 15.0 2 20.0
2 15.0 3 30.0
ผลลัพธ์ตัวอย่าง (ป้อน 3)
ป้อนค่า: 3
one two three
0 NaN 1.0 10.0
1 NaN 2.0 20.0
2 NaN 3.0 30.0
คำอธิบาย:
shift(periods=1, axis=1): เลื่อนคอลัมน์ไปขวา 1 ตำแหน่ง คอลัมน์แรกจะกลายเป็น NaNfill_value: ค่าที่ใช้เติมแทน NaN ที่เกิดจากการ shift- เงื่อนไข
user_input % 3 == 0 and user_input % 5 == 0หมายถึง หาร 15 ลงตัว (LCM ของ 3 และ 5)