Двойное вхождение значений столбца и обновление значения другого столбца - PullRequest
1 голос
/ 02 мая 2019

Мой набор данных выглядит следующим образом:

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

Есть идеи по питонскому способу сделать это?Извините за ужасно смутное название.Ура:)

Ответы [ 3 ]

4 голосов
/ 02 мая 2019

Вы можете попробовать что-то вроде этого, чтобы создать новое datafame с помощью конструктора, используя product из itertools.

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
4 голосов
/ 02 мая 2019

Используйте pd.melt , как указано ниже:

df['A'] = 'A'
df['B'] = 'B'
pd.melt(df, id_vars='Country', value_vars=['A', 'B']).sort_values('Country')
2 голосов
/ 02 мая 2019

В пандах вы можете делать с 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...