Với khung dữ liệu Pandas có nhiều cột với giá trị phân loại (0 hoặc 1), bạn có thể thuận tiện nhận giá trị_giá trị cho mỗi cột cùng một lúc không?Làm thế nào để có được giá trị đếm cho nhiều cột cùng một lúc trong Pandas DataFrame?
Ví dụ, giả sử tôi tạo ra một DataFrame như sau:
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'))
tôi có thể có được một DataFrame như thế này:
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
Làm thế nào để thuận tiện lấy đếm giá trị cho mỗi cột và có được sau đây thuận tiện?
a b c d
0 6 3 2 6
1 4 7 8 4
giải pháp hiện tại của tôi là:
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)
Nhưng có phải là một cách đơn giản, giống như xếp chồng, xoay vòng, hoặc groupby?
[Câu trả lời dưới đây] (https://stackoverflow.com/a/47187144/3707607) cung cấp cách tiếp cận khác với 'pd.crosstab'. Ngoài ra, 'value_counts' là một hàm mức cao nhất và câu trả lời hiện được chọn có thể được đơn giản hóa thành' df.apply (pd.value_counts) ' –