Biorąc pod uwagę Pandas DataFrame, która ma wiele kolumn z wartościami kategorycznymi (0 lub 1), czy można wygodnie uzyskać wartości równe dla każdej kolumny w tym samym czasie?Jak uzyskać wartości liczbowe dla wielu kolumn naraz w Pandas DataFrame?
Na przykład, załóżmy wygenerować DataFrame następująco:
import numpy as np
import pandas as pd
np.random.seed(0)
df = pd.DataFrame(np.random.randint(0, 2, (10, 4)), columns=list('abcd'))
mogę uzyskać DataFrame tak:
a b c d
0 0 1 1 0
1 1 1 1 1
2 1 1 1 0
3 0 1 0 0
4 0 0 0 1
5 0 1 1 0
6 0 1 1 1
7 1 0 1 0
8 1 0 1 1
9 0 1 1 0
Jak wygodnie dostać liczniki wartości dla każdej kolumny i uzyskać następujące wygodnie?
a b c d
0 6 3 2 6
1 4 7 8 4
Moje obecne rozwiązanie jest:
pieces = []
for col in df.columns:
tmp_series = df[col].value_counts()
tmp_series.name = col
pieces.append(tmp_series)
df_value_counts = pd.concat(pieces, axis=1)
Ale musi być prostszy sposób, jak układanie, odchylając lub GroupBy?
[Ta odpowiedź poniżej] (https://stackoverflow.com/a/47187144/3707607) zapewnia inny sposób z 'pd.crosstab'. Ponadto, 'value_counts' jest funkcją najwyższego poziomu, a obecnie wybraną odpowiedź można uprościć do' df.apply (pd.value_counts) ' –