Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用元素'获取列表;从数据帧中删除列_Python_Pandas_Dataframe - Fatal编程技术网

Python 使用元素'获取列表;从数据帧中删除列

Python 使用元素'获取列表;从数据帧中删除列,python,pandas,dataframe,Python,Pandas,Dataframe,我需要一个包含每个索引的所有特定元素列的列表。例如,此数据帧: >>> df 1 2 3 4 5 2016-01-27 A B B I I 2016-03-07 A C D U

我需要一个包含每个索引的所有特定元素列的列表。例如,此数据帧:

>>> 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]
有内置的方法吗


编辑:在原始表格中,一行中的所有项目都是唯一的,当编辑原始表格以减少在此发布的“密度”时,我犯了这个错误,很抱歉。

您可能希望
将数据帧融化为长格式,然后为每个输入(值)计算相应的列列表,在获得以下序列后,您可以很容易地查询任何预期输入的结果:

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

是否要输入的第一个索引?第1行的“B”将返回什么?在原始表中,一行中的所有项目都是唯一的,对不起,我编辑了原始表以使其在此处发布时不那么“密集”,我犯了这个错误。这很好,但是当行中没有“a”时,有没有办法获得“NaN”值?是否保证每行最多有一个
a
?如果它有多个As呢?你想保留哪一个?是的,一行中的所有项目都是唯一的,我在这里编辑表格时犯了这个错误,使其看起来不那么“密集”,我只是编辑了原始帖子。然后你可以尝试以下方法<代码>df.apply(lambda r:(r=='A').idxmax()如果有(r=='A')else np.nan,axis=1)。tolist()