Tôi có kinh nghiệm về R và mới đối với Python Pandas. Tôi đang cố gắng để chỉ mục một DataFrame để lấy các hàng đáp ứng một tập hợp các điều kiện logic - giống như câu lệnh "where" của SQL.lập chỉ mục một khung dữ liệu Python Pandas với nhiều điều kiện SQL giống như câu lệnh
Tôi biết cách thực hiện điều này trong R bằng dataframes (và với gói data.table của R, giống như một khung dữ liệu Pandas hơn khung dữ liệu gốc của R).
Dưới đây là một số mã mẫu xây dựng một DataFrame và mô tả về cách tôi muốn lập chỉ mục nó. Có cách nào làm dễ hơn không?
import pandas as pd
import numpy as np
# generate some data
mult = 10000
fruits = ['Apple', 'Banana', 'Kiwi', 'Grape', 'Orange', 'Strawberry']*mult
vegetables = ['Asparagus', 'Broccoli', 'Carrot', 'Lettuce', 'Rutabaga', 'Spinach']*mult
animals = ['Dog', 'Cat', 'Bird', 'Fish', 'Lion', 'Mouse']*mult
xValues = np.random.normal(loc=80, scale=2, size=6*mult)
yValues = np.random.normal(loc=79, scale=2, size=6*mult)
data = {'Fruit': fruits,
'Vegetable': vegetables,
'Animal': animals,
'xValue': xValues,
'yValue': yValues,}
df = pd.DataFrame(data)
# shuffle the columns to break structure of repeating fruits, vegetables, animals
np.random.shuffle(df.Fruit)
np.random.shuffle(df.Vegetable)
np.random.shuffle(df.Animal)
df.head(30)
# filter sets
fruitsInclude = ['Apple', 'Banana', 'Grape']
vegetablesExclude = ['Asparagus', 'Broccoli']
# subset1: All rows and columns where:
# (fruit in fruitsInclude) AND (Vegetable not in vegetablesExlude)
# subset2: All rows and columns where:
# (fruit in fruitsInclude) AND [(Vegetable not in vegetablesExlude) OR (Animal == 'Dog')]
# subset3: All rows and specific columns where above logical conditions are true.
Tất cả trợ giúp và đầu vào đều được hoan nghênh và đánh giá cao!
Cảm ơn, Randall
Wow. Chính xác những gì tôi cần. Cảm ơn bạn đã trả lời nhanh và trực tiếp. Lưu ý rằng tôi đánh vần rauTrong số đó sai ... nên đã có rauExclude (với c). Sửa chữa nó trong đoạn mã trên nên được sao chép và dán để kiểm tra. Cảm ơn một lần nữa. Randall. – user2537610