我有一个这样的数据框:
df = pd.DataFrame({'col1':list('abc'),
'col2':list('xyz'),
'col3':[10,20,30]})
print (df)
col1 col2 col3
0 a x 10
1 b y 20
2 c z 30
我想创建一个这样的数据框:
col1 col2 col3
0 a x 10
1 a y 20
2 a z 30
3 b x 10
4 b y 20
5 b z 30
6 c x 10
7 c y 20
8 c z 30
w.r.t第一列,在这种情况下是问题的唯一标识符。 如何解决这个问题?
答案 0 :(得分:1)
我认为需要list comprehension
使用zip第二和第三列:
from itertools import product
L = [[i, *j] for i, j in product(df['col1'], zip(df['col2'], df['col3']))]
df = pd.DataFrame(L, columns=['col1','col2','col3'])
print (df)
col1 col2 col3
0 a x 10
1 a y 20
2 a z 30
3 b x 10
4 b y 20
5 b z 30
6 c x 10
7 c y 20
8 c z 30