Как изменить структуру данных и преобразовать столбцы в строки? - PullRequest
2 голосов
/ 12 июля 2019
df = pd.DataFrame({'ProdcutID': {0: '2125',1: '1204',2: '4390'},
          'Color':{0:'R',1:'B',2:'Y'},
          'From':{0:'CA',1:'OH',2:'IN'},
         'Color1':{0:'P',2:'W'},
         'From1':{0:'NJ',2:'DE'},
         'Color3':{1:'G',2:'P'},
         'From3':{1:'MX',2:'PA'}})

enter image description here

У меня выше странный датафрейм, и я хочу преобразовать столбцы в строки. Я пытался использовать df.T, но не получил то, что хочу. Возможно использовать df.groupby('ProductID')...?

Ожидаемые результаты:

enter image description here

1 Ответ

2 голосов
/ 12 июля 2019

Попробуйте это, используя pd.wide_to_long, но сначала вам нужно переименовать пару заголовков столбцов, чтобы они соответствовали шаблону остальных столбцов.

df1 = df.rename(columns={'Color':'Color0','From':'From0'})
pd.wide_to_long(df1,['Color','From'],'ProdcutID','No').sort_index(level=0).dropna()

Выход:

             Color From
ProdcutID No           
1204      0      B   OH
          3      G   MX
2125      0      R   CA
          1      P   NJ
4390      0      Y   IN
          1      W   DE
          3      P   PA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...