Как легко выполнить приведенную ниже операцию над кадром данных в пандах, используя меньшее количество шагов?
Ввод:
di = {'col1': ['1', '2', '5',None, None,'10', None,None],
'col2': ['4', '7', None, '8', None, None, '11',None],
'col3': ['9', None, '3', '8', None,None, None,'12'],
'col4': ['abc', 'def', 'ghi', 'jkl', None,'mno', 'pqr',None],
'col5': ['123', None, '456', '789', None,None, None,'012'],
}
df = pd.DataFrame(di, dtype=object)
Входной фрейм данных:
![embedded image](https://i.stack.imgur.com/cFBZy.png)
Требуемый выходной кадр данных:
![embedded image](https://i.stack.imgur.com/nls6q.png)
Метод, который я использовал:
df.loc[~df.col1.isnull() & df.col2.isnull() & df.col3.isnull(), ['col2','col3']] = 'Hello'
df.loc[df.col1.isnull() & ~df.col2.isnull() & df.col3.isnull(), ['col1','col3']] = 'Hello'
df.loc[df.col1.isnull() & df.col2.isnull() & ~df.col3.isnull(), ['col1','col2']] = 'Hello'
df.loc[~df.col1.isnull() & ~df.col2.isnull() & df.col3.isnull(), ['col3']] = 'Hello'
df.loc[df.col1.isnull() & ~df.col2.isnull() & ~df.col3.isnull(), ['col1']] = 'Hello'
df.loc[~df.col1.isnull() & df.col2.isnull() & ~df.col3.isnull(), ['col2']] = 'Hello'