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()
。