Jestem bardzo nowy w Pandach (to znaczy w mniej niż 2 dni). Jednak nie mogę znaleźć odpowiedniej składni do łączenia dwóch kolumn z warunkiem if/else.jak połączyć dwie kolumny z pandami if/else w Pythonie?
Właściwie, wymyśliłem jeden sposób, aby to zrobić za pomocą "zip". To jest to, co chcę osiągnąć, ale wydaje się, że w pandach może być skuteczniejszy sposób.
Przez wzgląd na kompletność, I obejmują pewne wstępne przetwarzanie zrobić, aby było jasne:
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'])]
I Zastanawiam się, czy możesz napisać 'records_data ['year'] = records_data ['source'] jeśli records_data ['source'] else records_data ['year']'. – minopret
nie! -------------------------------------------------- ------------------------- Traceback wartości ValueError (ostatnie ostatnie połączenie) w () - ---> 1 x = records_data ['source'] if records_data ['source'] else records_data ['year'] ValueError: Wartość prawdy tablicy z więcej niż jednym elementem jest niejednoznaczna. Użyj a.any() lub a.all() –
pocketfullofcheese
szukam [Łączenie zachodzących na siebie zestawów danych] (http://pandas.pydata.org/pandas-docs/stable/basics.html#combining-overlapping-data -zestawy). Może uda ci się to odkryć szybciej niż ja. Zaintrygowało mnie tylko twoje pytanie. Nie znam Pandy. – minopret