Имея кадр данных, как:Объединить столбцы в DataFrame
import pandas
df = pandas.DataFrame({'a': [1, 2, 3], 'b': [9, 8, 7], 'c': [4, 5, 6]})
df
Я хотел бы иметь фрейм данных с:
- Фактором/колонке категории
['a', 'b']
. Имя этой колонки, мне все равно. - Столбец, который имеет старое значение столбца
a
илиb
, в зависимости от фактора['a', 'b']
. Имя этой колонки, мне все равно. - Сохранение значений и имени столбца
c
(фактический кадр данных содержит несколько столбцов, которые я хотел бы сохранить). - Меня не интересует порядок столбцов в результирующем фрейме данных, а также если некоторые (или любые) из них установлены как индекс.
Это пример того, что я хотел бы получить:
df['name_a'] = 'a'
df['name_b'] = 'b'
c0 = pandas.concat([df['name_a'], df['name_b']])
c1 = pandas.concat([df['a'], df['b']])
c2 = pandas.concat([df['c'], df['c']])
newdf = pandas.concat([c0, c1, c2], axis=1)
newdf
Есть ли лучший способ добиться того же результата? Я чувствую, что это очень уродливо. Возможно, функция pandas
, которую я пропускаю, и делает код намного чище и понятным?
Спасибо, это выглядит довольно хорошо! Однако обратите внимание, что «* в фактическом кадре данных есть несколько столбцов, которые я хотел бы сохранить *» (т. Е .: много столбцов 'c'). Есть ли способ сделать это, используя 'a' и' b' в качестве параметров вместо 'c'? ('a' и' b' всегда 2, но есть много столбцов 'c' с разными именами, и я хотел бы сохранить их все). – Peque
уверен, дайте мне сек. – jezrael
Проверьте мой ответ. – jezrael