Я полагаю, что это то, что вы просите, если это не так, прокомментируйте и отредактируйте свой ответ с ожидаемым результатом.
import pandas as pd
import numpy as np
a = {'year':[1990,1923,1904,'not4digits','not4digits',2001],'monthdayyear':[1990,1923,1904,20140901,20180305,2001]}
df = pd.DataFrame(a)
print(df)
df['year'] = np.where(len(df['year']) == 4, df['year'],df['monthdayyear'].astype(str).str[:10])
print(df)
Вывод перед применением условия:
year monthdayyear
0 1990 1990
1 1923 1923
2 1904 1904
3 not4digits 20140901
4 not4digits 20180305
5 2001 2001
Вывод после применения np.where
, если условие не выполняется и значения в столбце year
заменены значениями в столбцах monthdayyear
:
year monthdayyear
0 1990 1990
1 1923 1923
2 1904 1904
3 20140901 20140901
4 20180305 20180305
5 2001 2001