我需要pandas数据框的帮助。 我的数据框有以下列:
Surname, project, project_type, city, value
列“project”和“city”中的单元格具有多个值,以“/”分隔。此类单元格中的最大值数可能是可变的。 对于每一行(在单元格内都有多个值),我需要将它分解为单独的行,在项目和城市列中只有一个值。 其他列中的其余值保持不变。
"Surname"; "project"; "Project_type"; "City"; "value"
有人有任何想法吗? 如果数值不变,不会让我麻烦,但恐怕这是一个挑战。
答案 0 :(得分:0)
我认为需要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