我有一个这样的数据帧:
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,但是我可以在事后把它扔掉。)
因此,对于上面的数据帧,如果我查看"Name",我想要输出"status“(或"Id","status")。相反,如果我查看"status“列,我会希望使用"Id", "Name"
发布于 2018-07-10 05:16:07
我认为这个问题并不像每个人都发现的那样令人困惑。对于固定的名称,我们寻找的是非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
https://stackoverflow.com/questions/51254027
复制相似问题