我需要一个包含每个索引的所有特定元素列的列表。例如,这个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]
是否有内置方法?
编辑:在原始表中,一行中的所有项目都是唯一的,在编辑原始表格时使其不太“密集”以便在此处发布,我犯了这个错误,抱歉。
答案 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']