/ / Zastosuj metodę DataFrame vs List Comprehension - python, pandy

Zastosuj metodę DataFrame vs List Comprehension - python, pandy

Muszę uzyskać listę niektórych konkretnych indeksów z serii Pandas; oraz listę wszystkich tych list dla wszystkich serii DataFrame.

Mogę to zrobić ze zrozumieniem listy, ale chciałbym zrozumieć, czy mogę to zrobić za pomocą metody apply DataFrame. Oto model zabawkowy:

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]

Prawdopodobnie to tylko z powodu mojej płytkiejznajomość pand, ale kiedy używam metody apply, wyobrażam sobie serię jako listę, więc nie mam pojęcia, jak "wstawić" atrybut indeksu.

Odpowiedzi:

1 dla odpowiedzi № 1

Nie wiesz, jaki jest twój cel końcowy, ale często lepiej jest zachować ramkę jako ramę do przyszłych operacji.

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

Konwertuj elementy, które nie są zainteresowane, do 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]

Jeśli naprawdę chcesz indeks

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")