Не уверен, что это именно то, что вам нужно:
import pandas as pd
df = pd.DataFrame([[10,20],[9,11],[7,None],[None,None],['Emma','Elly']]).T
df.columns = ['ID','ID1','ID2','ID3','Name']
data = []
for i,r in df.iterrows():
r = r.to_dict()
for k,v in r.items():
if k.startswith('ID') and v is not None:
data.append([v,r['Name']])
result = pd.DataFrame(data,columns=['ID','Name'])
Вывод:
ID Name
0 10 Emma
1 9 Emma
2 7 Emma
3 20 Elly
4 11 Elly