我有一个这样的数据框:
Id Name site status
1995 sachin http://www.abcd.co closed
1996 sachin http://www.abcd.co working
1997 sourav http://www.abcd.co closed
1998 sourav http://www.abcd.co working
,我想找出对于给定名称哪些列可能有所不同。在这种情况下,对于每个名称,站点都是相同的(始终为http://www.abcd.co
),但是状态和ID都不同。 (我不在乎Id,但之后总是可以将其丢弃。)
因此对于上述数据框,如果我查看“名称”,则需要输出“状态”(或[“ Id”,“状态”])。相比之下,如果我查看“状态”列,则需要[“ Id”,“ Name”](由于status = closed,sachin和sourav之间的名称有所不同,而ID也有所不同。)>
答案 0 :(得分:2)
我认为这个问题并不像每个人都发现的那样令人困惑。对于固定名称,我们正在寻找不同的非ID列。我可能会做类似的事情:
multivalued = (df.drop("Id", axis=1).groupby("Name").nunique() > 1).any()
result = multivalued[multivalued].index.tolist()
这给了我
In [91]: result
Out[91]: ['status']
因为
In [97]: (df.drop("Id", axis=1).groupby("Name").nunique())
Out[97]:
Name site status
Name
sachin 1 1 2
sourav 1 1 2
In [98]: ((df.drop("Id", axis=1).groupby("Name").nunique()) > 1).any()
Out[98]:
Name False
site False
status True
dtype: bool