有没有一种方法可以只返回在另一列中具有True和False的列中的名称?

时间:2020-05-20 23:24:46

标签: python pandas dataframe

我有一个这样的数据框:

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的行?

2 个答案:

答案 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']