我有一个这样的数据框:
dataframee = pd.DataFrame({'names': ['ana','alex','paul','ana','alex','paul'], 'some_column': [False, False, False,True,True,False]})
我只想返回名称ana和alex,因为它们具有True和False。
我正在做这样的事情:
list_name = []
for i in dataframe['names']:
if dataframe[dataframe['names'] == i].some_column.nunique() == 2:
list_name.append(i)
list(set(list_name))
还有另一种更简单,更有效的方法吗?还是只返回名称在“ some_column”中具有True和False的行?
答案 0 :(得分:1)
我们可以做到
g=df.groupby('names').some_column
s=g.sum().eq(1)&g.count().eq(2)
names
alex True
ana True
paul False
Name: some_column, dtype: bool
s.index[s].tolist()
答案 1 :(得分:1)
赞:
In [1349]: a = dataframee.groupby('names')['some_column'].nunique() > 1
In [1351]: names = a.index[a].tolist()
In [1353]: names
Out[1351]: ['alex', 'ana']