2016-11-01 2 views
2

Мне нужно иметь список, содержащий столбцы каждого конкретного элемента для каждого индекса. Например, это DataFrame:Получить список с столбцами элемента из Pandas DataFrame

>>> df 
        1   2   3   4   5 
2016-01-27   A   B   B   I   I 
2016-03-07   A   C   D   U   U 
2016-04-12   H   A   V   V   V 
2016-05-02   B   L   Y   S   N 
2016-05-23   L   N   N   A   S 

Ввод «А» Я хотел бы, чтобы этот список в качестве вывода:

[1,1,2,NaN,4] 

Есть ли встроенный метод для этого?

Редактировать: В исходной таблице все элементы в строке уникальны при редактировании оригинальной таблицы, чтобы сделать ее менее «плотной» для публикации здесь, и я сделал эту ошибку, извините.

+1

ли вы хотите * первым * индекс ввода? Что будет «B» для строки 1? – brianpck

+0

В исходной таблице все элементы в строке уникальны, извините, я отредактировал исходную таблицу, чтобы сделать ее менее «плотной» для публикации здесь, и я допустил эту ошибку. –

ответ

2

Возможно, вы захотите до melt передать свой формат данных в длинный формат, а затем вычислить соответствующий список столбцов для каждого входа (значения). После получения Серии в следующем виде вам будет легко запросить результат для любого предназначен вход:

import pandas as pd 
pd.melt(df).groupby('value').variable.apply(list) 

#value 
#A [1, 1, 2, 4] 
#B  [1, 2, 3] 
#C    [2] 
#D    [3] 
#H    [1] 
#I   [4, 5] 
#L   [1, 2] 
#N  [2, 3, 5] 
#S   [4, 5] 
#U   [4, 5] 
#V  [3, 4, 5] 
#Y    [3] 
#Name: variable, dtype: object 

Чтобы получить список столбцов для ввода A:

result = pd.melt(df).groupby('value').variable.apply(list) 

result['A'] 
# ['1', '1', '2', '4'] 
+0

Это хорошо работает, но есть ли способ получить значение ** «NaN» **, когда в строке нет ** «A» **? –

+0

Гарантируется ли в каждой строке не более одного 'A'? Что, если у него есть несколько As? Какой из них вы хотите сохранить? – Psidom

+0

Да, все элементы в строке уникальны, я допустил эту ошибку при редактировании таблицы, чтобы выглядеть менее «плотным» здесь, я только что отредактировал оригинальный пост. –

Смежные вопросы