Giả sử bạn dịch chuyển cột sang phải 1 vị trí (shift axis=1), nếu người dùng nhập số chia hết cho 3 và 5 thì điền giá trị đó vào ô trống, ngược lại để NaN.
Giải pháp
- Tạo DataFrame 3 cột.
- Dịch chuyển:
df.shift(periods=1, axis=1). - Nhập input, kiểm tra
user_input % 3 == 0 and user_input % 5 == 0. - Nếu đúng:
df.shift(periods=1, axis=1, fill_value=user_input).
Mã ví dụ
import pandas as pd
df = pd.DataFrame({
'one': [1,2,3],
'two': [10,20,30],
'three': [100,200,300]
})
print("DataFrame gốc:\n", df)
user_input = int(input("Nhập giá trị: "))
if user_input % 3 == 0 and user_input % 5 == 0:
result = df.shift(periods=1, axis=1, fill_value=user_input)
else:
result = df.shift(periods=1, axis=1)
print("\nKết quả:\n", result)
Kết quả mẫu (input=15)
Nhập giá trị: 15 Kết quả: one two three 0 15 1 10 1 15 2 20 2 15 3 30
Kết quả mẫu (input=3)
Nhập giá trị: 3 Kết quả: one two three 0 NaN 1.0 10.0 1 NaN 2.0 20.0 2 NaN 3.0 30.0
Giải thích:
axis=1: Dịch chuyển theo chiều ngang (cột).periods=1: Dịch 1 bước.fill_value: Giá trị điền vào vị trí mới tạo ra (cột đầu tiên).- 15 chia hết cho 3 và 5 → điền 15. 3 không chia hết cho 5 → NaN.