Панды, как преобразовать двумерный кадр данных в одномерный кадр данных - PullRequest
0 голосов
/ 07 июня 2018

предположим, у меня есть датафрейм с несколькими столбцами.

    a   b   c
1           
2           
3   

Как преобразовать его в отдельный столбец данных.

1   a
2   a
3   a
1   b
2   b
3   b
1   c
2   c
3   c

Обратите внимание, что первым является Dataframe, отличный от Panel

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

другой способ,

pd.DataFrame(list(itertools.product(df.index, df.columns.values))).set_index([0])

Выход:

   1
0   
1  a
1  b
1  c
2  a
2  b
2  c
3  a
3  b
3  c

Для точного вывода:

используйте sort_values

print pd.DataFrame(list(itertools.product(df.index, df.columns.values))).set_index([0]).sort_values(by=[1])

   1
0   
1  a
2  a
3  a
1  b
2  b
3  b
1  c
2  c
3  c
0 голосов
/ 07 июня 2018

Используйте melt:

df = df.reset_index().melt('index', var_name='col').set_index('index')[['col']]
print (df)
      col
index    
1       a
2       a
3       a
1       b
2       b
3       b
1       c
2       c
3       c

Или numpy.repeat и numpy.tile с конструктором DataFrame ::

a = np.repeat(df.columns, len(df))
b = np.tile(df.index, len(df.columns))
df = pd.DataFrame(a, index=b, columns=['col'])
print (df)
  col
1   a
2   a
3   a
1   b
2   b
3   b
1   c
2   c
3   c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...