Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.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 - Fatal编程技术网

Python “我怎么能?”;分组方式;熊猫的细胞价值?

Python “我怎么能?”;分组方式;熊猫的细胞价值?,python,pandas,Python,Pandas,我有一个数据框,看起来像: _|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)] } 我不在乎结果是一个字典还是另一个数据框您可以使用数据框,然后在dict理解中使用groupby创建与单元格值和索引对应的键值对: s = df.stack() dct = {k: [*g.index]

我有一个数据框,看起来像:

_|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)]
}
我不在乎结果是一个字典还是另一个数据框

您可以使用数据框,然后在
dict
理解中使用
groupby
创建与单元格值和索引对应的键值对:

s = df.stack()
dct = {k: [*g.index] for k, g in s.groupby(s)}


您可以在此处使用
GroupBy.groups

g = df.stack()
g.groupby(g).groups
{
  1: [('x', 'a'), ('x', 'b'), ('x', 'c'), ('z', 'c')], 
  2: [('y', 'a'), ('y', 'b'), ('z', 'b')], 
  3: [('y', 'c'), ('z', 'a')]
}
试试这个-

#Dummy example - 
df = pd.DataFrame({'A':[1,2,3,1],'B':[1,1,3,2]}, index=['x','y','z','w'])

#Create tuples of value, index and column
l = [(i,(j,k)) for k,v in df.items() for i,j in zip(v,v.index)]

#Group them by value and create list
pd.DataFrame(l).groupby(0)[1].apply(list)

这里有一些很好的答案,我选择了使用
melt
,我添加这一点是因为也许看到/也许这其中有一些错误是其他人应该避免的,并且有人会强调

不过,这里有一种方法:

#示例数据
df=pd.DataFrame(
{
“a”:[1,2,3],
“b”:[1,2,2],
“c”:[1,3,1],
},
索引=列表(“xyz”),
)
cell_值={}
对于单元格值,df.reset_index()中的g.melt(id_vars=“index”).groupby(“值”):
单元值[单元值]=集合(g[[“索引”,“变量”]]。应用(元组,轴=1))

我假设只需要唯一的条目,因此使用了
set()

这是一个很好的分组方法。节日快乐!保持安全和健康:)谢谢你…节日快乐,圣诞快乐…TBH我第一次尝试了与你相同的方法(投票赞成),然后开始使用小组:P
#Dummy example - 
df = pd.DataFrame({'A':[1,2,3,1],'B':[1,1,3,2]}, index=['x','y','z','w'])

#Create tuples of value, index and column
l = [(i,(j,k)) for k,v in df.items() for i,j in zip(v,v.index)]

#Group them by value and create list
pd.DataFrame(l).groupby(0)[1].apply(list)
0
1    [(x, A), (w, A), (x, B), (y, B)]
2                    [(y, A), (w, B)]
3                    [(z, A), (z, B)]