两次出现一列的值并更新另一列的值

时间:2019-05-02 13:22:41

标签: python pandas numpy

我的数据集如下:

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方法的任何想法吗?抱歉,标题太含糊。 干杯:)

3 个答案:

答案 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