/ / Aplicar método de DataFrame vs Compreensão de lista - python, pandas

Aplicar método de comparação de lista vs DataFrame - python, pandas

Eu preciso pegar a lista de alguns índices específicos de uma série de pandas; e a lista de todas essas listas para todas as séries de um DataFrame.

Eu posso fazer isso com compreensão de lista, mas eu gostaria de entender se eu posso fazer isso com o método apply do DataFrame. Aqui está um modelo de brinquedo:

a=pd.DataFrame({"a":[1,1,1,0,0,1],"b":[1,0,1,0,0,1]})
[a[a[name]==1].index for name in a.columns]

Provavelmente é só por causa do meu rasoConhecimento de pandas, mas quando eu uso o método de aplicar eu imagino a série como uma lista ou assim, portanto, não tenho nenhuma idéia sobre como "colocar" o atributo de índice.

Respostas:

1 para resposta № 1

Não sei qual é o seu objetivo final, mas geralmente é melhor manter um quadro como um quadro para operações futuras.

In [1]:  a=pd.DataFrame({"a":[1,1,1,0,0,1],"b":[1,0,1,0,0,1]})

Converta os elementos que você não está interessado em nan

In [2]: a.where(a==1)
Out[2]:
a   b
0   1   1
1   1 NaN
2   1   1
3 NaN NaN
4 NaN NaN
5   1   1

[6 rows x 2 columns]

Se você realmente quer o índice

In [4]: a.where(a==1)["a"].dropna().index
Out[4]: Int64Index([0, 1, 2, 5], dtype="int64")

In [5]: a.where(a==1)["b"].dropna().index
Out[5]: Int64Index([0, 2, 5], dtype="int64")