python - 如何在 Pandas 中获得 "group by"单元格值?

标签 python pandas

我有一个 DataFrame 看起来像:

_|a |b |c
x|1 |1 |1
y|2 |2 |3
z|3 |2 |1
我希望结果是:
{
    1: [(x,a),(x,b),(x,c),(z,c)}
    2: [(y,a),(y,b),(z,b)]
    3: [(y,c),(z,a)]
}
我不在乎结果是字典还是其他数据框

最佳答案

您可以 stack 然后数据框使用 groupby里面dict创建对应于单元格值和索引的键值对的理解:

s = df.stack()
dct = {k: [*g.index] for k, g in s.groupby(s)}
{1: [('x', 'a'), ('x', 'b'), ('x', 'c'), ('z', 'c')],
 2: [('y', 'a'), ('y', 'b'), ('z', 'b')],
 3: [('y', 'c'), ('z', 'a')]}

关于python - 如何在 Pandas 中获得 "group by"单元格值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65467067/

相关文章:

python - Django REST Framework 如何将上下文添加到 ViewSet

python /泡沫 : Type not found: 'xs:complexType'

python - 如何将列更改为行

python - 来自嵌套单词列表的共现矩阵

python pandas 分组依据和聚合列

regex - 使用正则表达式识别 pandas 列中的模式和清理数据

python - 使用 if 和循环技术将清理后的数据附加到字典中

Python:如何将 Pandas Dataframe 行值转换为单独的列?

python - 如何使用条形图绘制最小/最大条形图

python - 创建包含对角确定值的单位矩阵