Может кто-нибудь объяснить, что я здесь не так делаю? Я пытаюсь использовать np.where () следующим образом:
#IF SLO contains _ use a regular expression to capture the digit after _Gen, ELSE strip off the last character
df_joined['new'] = np.where(df_joined['SLO'].str.contains('_'), df_joined['SLO'].str.extract(r'_Gen(\d+)_'), df_joined['SLO'].str.strip().str[-1])
Я получаю эту ошибку:
ValueError: Wrong number of items passed 9, placement implies 1
Данные в df_joined ['SLO']:
1997 MIGP8G5
1998 MIGP8G5
1999 MIGP8G5
2000 MIGP8G5
2001 MIGP8G5
2002 MIGP8G5
2003 MIGP8G5
2004 MIGP8G5
2005 MIGP8G5
9 строк
Когда я переставляю код на этот код:
np.where(df_joined['SLO'].str.contains('_'),
'test',
df_joined['SLO'].str.strip().str[-1])
Он работает правильно и возвращается 9 элементов.
Но когда я делаю this:
np.where(df_joined['SLO'].str.contains('_'),
df_joined['SLO'].str.extract(r'_Gen(\d+)_'),
df_joined['SLO'].str.strip().str[-1])
81 возвращаются значения
Что я делаю не так?