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

关于python - 从 Pandas DataFrame 获取包含元素列的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40366943/

相关文章:

python - 带或不带 OOP 的 Tkinter

python - numpy: "array_like"对象的正式定义?

python - 将一列数据附加到现有数据框

python - 如何在Python中按两列分组,计算加权平均值,返回DataFrame

python - 如何在 pandas 中进行复杂的数据清理

python - BaseHTTPRequestHandler 在由 pythonw.exe 3.1 运行时挂起

python - 在多列 Pandas 上应用 lambda 行

python - 检查两个 df 是否相同模式并在 pandas 中使用 groupby

python - 如何使用 Pandas 编写分区的 Parquet 文件

python - 使用 .loc 方法同时选择多列和切片列