Aby uzyskać liczbę wierszy w użyciu dataframe:
df.shape[0]
(i df.shape[1]
, aby uzyskać liczbę kolumn).
Jako alternatywę można użyć
len(df)
lub
len(df.index)
(i len(df.columns)
dla kolumn)
shape
jest bardziej wszechstronny i bardziej wygodne niż len()
, zwłaszcza dla interaktywnej pracy (po prostu trzeba dodać na końcu), ale len
jest nieco szybszy (patrz als o this answer).
Aby uniknąć: count()
ponieważ zwraca liczba non-NA/obserwacje zerowe na żądanie oś
len(df.index)
jest szybsza
import pandas as pd
import numpy as np
df = pd.DataFrame(np.arange(24).reshape(8, 3),columns=['A', 'B', 'C'])
df['A'][5]=np.nan
df
# Out:
# A B C
# 0 0 1 2
# 1 3 4 5
# 2 6 7 8
# 3 9 10 11
# 4 12 13 14
# 5 NaN 16 17
# 6 18 19 20
# 7 21 22 23
%timeit df.shape[0]
# 100000 loops, best of 3: 4.22 µs per loop
%timeit len(df)
# 100000 loops, best of 3: 2.26 µs per loop
%timeit len(df.index)
# 1000000 loops, best of 3: 1.46 µs per loop
df.__len__
jest właśnie wezwanie do len(df.index)
import inspect
print(inspect.getsource(pd.DataFrame.__len__))
# Out:
# def __len__(self):
# """Returns length of info axis, but here we use the index """
# return len(self.index)
Dlaczego nie należy używać count()
df.count()
# Out:
# A 7
# B 8
# C 8
Ok to było proste. len (dataframe) był łatwą odpowiedzią. print len (df3) – IcemanBerlin
To działa ... tak jak w fyi wygląda na to, że opuszczasz '()', więc kiedy nazwiesz 'cnt = df.count', to faktycznie ustawiasz' cnt' jest równy metodzie ramki danych, a nie wynikowi tej metody. Spróbuj 'cnt = df.count(); wydrukuj cnt', aby zobaczyć, o czym mówię. – tshauck
Ah. dzięki tshauck, myślę, że to było właśnie to, co próbowałem zrobić. Wynik tego testu faktycznie wydrukował liczbę dla każdego pola, tj. Pole 1 = 10, a następnie Pole 2 = 10. Sądzę, że można również zastosować liczbę do jednego konkretnego Pola? – IcemanBerlin