панды - две даты в одном столбце - PullRequest
0 голосов
/ 06 мая 2018

у меня есть два кадра данных

df = pd.DataFrame({'A': [1,2,3,4], 'B': [5,6,7,8], 'C': [9,10,11,12]})

df2 = pd.DataFrame({'A': ['a','b','c','d'], 'B': ['e','f','g','h'], 'C': ['i','j','k','l']})

Я пытаюсь объединить два кадра данных, но также добавить заголовок каждого столбца в отдельный столбец. То, что я ищу для производства, ниже.

df3 = pd.DataFrame({'Serial': ['a','b','c','d','e','f','g','h','i','j','k','l'],
                'Cost': [1,2,3,4,5,6,7,8,9,10,11,12],
                'Name': ['A','A','A','A','B','B','B','B','C','C','C','C']})

Я пробовал перебирать столбцы, но в итоге получился беспорядок.

1 Ответ

0 голосов
/ 06 мая 2018

Вот один из способов

In [33]: (pd.concat([df.unstack(), df2.unstack()], axis=1).reset_index()
           .drop('level_1', 1)
           .rename(columns={'level_0': 'Name', 0: 'Cost', 1: 'Serial'}))
Out[33]:
   Name  Cost Serial
0     A     1      a
1     A     2      b
2     A     3      c
3     A     4      d
4     B     5      e
5     B     6      f
6     B     7      g
7     B     8      h
8     C     9      i
9     C    10      j
10    C    11      k
11    C    12      l

Другой способ.

In [42]: pd.DataFrame({
            'Name': df.columns.repeat(len(df.index)), 
            'Cost': df.values.flatten(order='k'), 
            'Serial': df2.values.flatten(order='k')})
Out[42]:
    Cost Name Serial
0      1    A      a
1      2    A      b
2      3    A      c
3      4    A      d
4      5    B      e
5      6    B      f
6      7    B      g
7      8    B      h
8      9    C      i
9     10    C      j
10    11    C      k
11    12    C      l
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...