Tôi rất mới đối với Pandas (tức là, dưới 2 ngày). Tuy nhiên, tôi dường như không thể tìm ra cú pháp đúng để kết hợp hai cột với điều kiện if/else.làm thế nào để kết hợp hai cột với một if/else trong pandas python?
Thực ra, tôi đã tìm ra một cách để thực hiện việc đó bằng cách sử dụng 'zip'. Đây là những gì tôi muốn thực hiện, nhưng có vẻ như có một cách hiệu quả hơn để làm điều này trong gấu trúc.
Đối với đầy đủ sake, tôi bao gồm một số tiền xử lý tôi làm gì để làm cho mọi việc rõ ràng:
records_data = pd.read_csv(open('records.csv'))
## pull out a year from column using a regex
source_years = records_data['source'].map(extract_year_from_source)
## this is what I want to do more efficiently (if its possible)
records_data['year'] = [s if s else y for (s,y) in zip(source_years, records_data['year'])]
tôi tự hỏi liệu bạn có thể viết 'records_data ['year'] = records_data ['source'] nếu records_data ['source'] else records_data ['year']'. – minopret
không! -------------------------------------------------- ------------------------- ValueError Traceback (cuộc gọi gần đây nhất) trong () - ---> 1 x = records_data ['source'] nếu records_data ['source'] else records_data ['year'] ValueError: Giá trị thực của một mảng có nhiều phần tử không rõ ràng. Sử dụng a.any() hoặc a.all() –
pocketfullofcheese
Tôi đang xem [Kết hợp tập hợp dữ liệu chồng chéo] (http://pandas.pydata.org/pandas-docs/stable/basics.html#combining-overlapping-data -sets). Có lẽ bạn có thể hình dung ra nhanh hơn tôi có thể. Tôi chỉ bị hấp dẫn bởi câu hỏi của bạn. Tôi không quen với Pandas. – minopret