从Pandas DataFrame

时间:2016-11-01 19:05:56

标签: python pandas dataframe

我需要一个包含每个索引的所有特定元素列的列表。例如,这个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  

输入“A”我希望将此列表作为输出:

[1,1,2,NaN,4]

是否有内置方法?

编辑:在原始表中,一行中的所有项目都是唯一的,在编辑原始表格时使其不太“密集”以便在此处发布,我犯了这个错误,抱歉。

1 个答案:

答案 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']