我的数据集如下:
Country | ProductType
USA | A
China | B
Japan | A
Ireland | B
France | A
我需要复制每个国家/地区的出现,并在ProductType列中分配一个相应的值,以便为每个国家/地区提供产品A和B。
我在寻找什么
Country | ProductType
USA | A
USA | B
China | A
China | B
Japan | A
Japan | B
Ireland | A
Ireland | B
France | A
France | B
关于pythonic方法的任何想法吗?抱歉,标题太含糊。 干杯:)
答案 0 :(得分:4)
使用pd.melt,如下所示:
df['A'] = 'A'
df['B'] = 'B'
pd.melt(df, id_vars='Country', value_vars=['A', 'B']).sort_values('Country')
答案 1 :(得分:4)
您可以尝试使用类似的方法,使用itertools中的product
与构造函数建立新的数据信誉。
from itertools import product
pd.DataFrame(product(df['Country'].unique(), df['ProductType'].unique()), columns=['Country','ProductType'])
输出:
Country ProductType
0 USA A
1 USA B
2 China A
3 China B
4 Japan A
5 Japan B
6 Ireland A
7 Ireland B
8 France A
9 France B
答案 2 :(得分:2)
在大熊猫中,您可以使用MultiIndex
pd.MultiIndex.from_product(list(map(set,df.values.T.tolist()))).to_frame()
Out[1148]:
0 1
France A France A
B France B
China A China A
B China B
Japan A Japan A
B Japan B
USA A USA A
B USA B
Ireland A Ireland A
B Ireland B