Phương thức numpy.where() có thể dùng để lọc DataFrame Pandas. Đặt điều kiện trong where(). Trước tiên import thư viện:
import pandas as pd
import numpy as np
Tạo DataFrame sản phẩm
dataFrame = pd.DataFrame({
"Product": ["SmartTV", "ChromeCast", "Speaker", "Earphone"],
"Opening_Stock": [300, 700, 1200, 1500],
"Closing_Stock": [200, 500, 1000, 900]
})
Lọc với 2 điều kiện
resValues1 = np.where((dataFrame['Opening_Stock'] >= 700) & (dataFrame['Closing_Stock'] < 1000))
print("\nDataFrame lọc 2 điều kiện:\n", dataFrame.loc[resValues1])
Lọc với 3 điều kiện
resValues2 = np.where((dataFrame['Opening_Stock'] >= 500) &
(dataFrame['Closing_Stock'] < 1000) &
(dataFrame['Product'].str.startswith('C')))
print("\nDataFrame lọc 3 điều kiện:\n", dataFrame.loc[resValues2])
Ví dụ hoàn chỉnh
import pandas as pd
import numpy as np
dataFrame = pd.DataFrame({
"Product": ["SmartTV", "ChromeCast", "Speaker", "Earphone"],
"Opening_Stock": [300, 700, 1200, 1500],
"Closing_Stock": [200, 500, 1000, 900]
})
print("DataFrame...\n", dataFrame)
# 2 điều kiện
resValues1 = np.where((dataFrame['Opening_Stock'] >= 700) & (dataFrame['Closing_Stock'] < 1000))
print("\nLọc 2 điều kiện:\n", dataFrame.loc[resValues1])
# 3 điều kiện
resValues2 = np.where((dataFrame['Opening_Stock'] >= 500) &
(dataFrame['Closing_Stock'] < 1000) &
(dataFrame['Product'].str.startswith('C')))
print("\nLọc 3 điều kiện:\n", dataFrame.loc[resValues2])
Kết quả đầu ra
DataFrame... Closing_Stock Opening_Stock Product 0 200 300 SmartTV 1 500 700 ChromeCast 2 1000 1200 Speaker 3 900 1500 Earphone Lọc 2 điều kiện: Closing_Stock Opening_Stock Product 1 500 700 ChromeCast 3 900 1500 Earphone Lọc 3 điều kiện: Closing_Stock Opening_Stock Product 1 500 700 ChromeCast
Lưu ý: np.where trả về tuple mảng chỉ số. Dùng df.loc[resValues1] để lấy hàng. Cách tự nhiên hơn trong Pandas: df[(df['Opening_Stock']>=700) & (df['Closing_Stock']<1000)].