Я считаю, что нужно product
, но сначала разделить значения на /
:
from itertools import product
a=pd.DataFrame([j for i in df.apply(lambda x: x.str.split('/')).values for j in product(*i)],
columns=df.columns)
print (a)
Surname project Project_type City value
0 Smith PR_A L Lon 10,000
1 Smith PR_A L NY 10,000
2 Smith PR_A L LA 10,000
3 Smith PR_B L Lon 10,000
4 Smith PR_B L NY 10,000
5 Smith PR_B L LA 10,000
6 Johnson PR_A S Paris 8,000
7 Johnson PR_A S Toronto 8,000
8 Sunshine PR_C L Lon 17,000
9 Sunshine PR_C L NY 17,000
10 Sunshine PR_C L LA 17,000
11 Sunshine PR_C L Toronto 17,000
12 Sunshine PR_A L Lon 17,000
13 Sunshine PR_A L NY 17,000
14 Sunshine PR_A L LA 17,000
15 Sunshine PR_A L Toronto 17,000
16 Sunshine PR_B L Lon 17,000
17 Sunshine PR_B L NY 17,000
18 Sunshine PR_B L LA 17,000
19 Sunshine PR_B L Toronto 17,000
20 Archibald PR_D S LA 6,000