np.where
có ngữ nghĩa của một véc tơ nếu/else (tương tự như phương pháp của Apache Spark when
/otherwise
DataFrame). Tôi biết rằng tôi có thể sử dụng np.where
trên gấu trúc Series
, nhưng pandas
thường xác định API riêng của mình để sử dụng thay vì các hàm numpy
thô, thường thuận tiện hơn với pd.Series
/pd.DataFrame
.gấu trúc tương đương với np.where
Chắc chắn đủ, tôi đã tìm thấy pandas.DataFrame.where
. Tuy nhiên, ngay từ cái nhìn đầu tiên, nó có một ngữ nghĩa hoàn toàn khác. Tôi không thể tìm thấy một cách để viết lại ví dụ cơ bản nhất của np.where
sử dụng gấu trúc where
:
# df is pd.DataFrame
# how to write this using df.where?
df['C'] = np.where((df['A']<0) | (df['B']>0), df['A']+df['B'], df['A']/df['B'])
Am tôi thiếu một cái gì đó rõ ràng? Hoặc là gấu trúc where
dành cho trường hợp sử dụng hoàn toàn khác, mặc dù có cùng tên là np.where
?
Chuỗi tài liệu http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.where.html dường như giải thích một cách hợp lý (mặc dù nó có thể sử dụng một hoặc hai ví dụ). Chú ý đến mô tả ngắn và mô tả các đối số 'cond' và' other', nhưng bỏ qua tùy chọn cho các đối số này để có thể gọi được. –
@WarrenWeckesser Vào lần đọc thứ hai của các tài liệu, tôi nghĩ rằng tôi đã nhận nó ... Nó giống như '(df.A + df.B) .where ((df ['A'] <0) | (df [' B ']> 0), df.A/df.B) ', phải không? Tôi sẽ xóa câu hỏi của tôi. – max
@max: Không xóa. Điều này có thể sẽ giúp ai đó trong tương lai. – bernie