다음과 같이 나는 팬더 dataframe이 : 안 COL_1
및 COL_2
을 (VAL_1
:열을 기준으로 행을 필터링 자동화하는 방법
df =
COL_1 COL_2 VAL_1
ABC AAA ABC
CDE CDE RTY
ABC ABC RTY
ABC RTY DEF
내가 COL
로 시작하는 열에서 고유 한 값을 포함하는 행의 수를 caculate 할 익숙한).
예상 결과는 다음
GROUP COUNT
ABC 3
CDE 2
RTY 1
AAA 1
한가지 가능성 수동 열 이름을 지정하고 수동 GROUP
모든 가능한 값을 특정 행의 수를 계산하는 것이다. 그러나 분명히이 솔루션은 GROUP
의 열과 값의 수가 많으면 좋지 않습니다.
자동으로 수행하는 방법? 나는이 접근법이 COL
으로 시작하는 열의 튜닉 값을 가진 모든 행을 필터링해야한다고 생각합니까?
나는 이것을 시도했지만 1Gb의 데이터 세트에서 오랜 시간이 걸리며 잘못된 결과가 나왔다. 또한 GROUP
의 값을 지정하는 것을 피하는 방법을 모르겠습니다. str.contains('ABC')
.
t_cols = [c for c in df.columns.values if not c.startswith('COL')]
aa = df.drop(t_cols,axis=1)
aa.apply(lambda row: row.astype(str).str.contains('ABC').any(), axis=1).shape
그래,이 솔루션이 더 낫다! :) – MaxU
좋은 해결책입니다. 그런데이 코드에 조건을 추가하는 방법을 알고 있습니까? 칼럼'VAL_1'의 값이'ABC'와 같다고 생각할 때 행을 셀 수 있다면 어떻게 될까요? – Dinosaurius
가지고있는 행의 수를 세는 것을 의미한다면,'shape [0]'을 사용할 수 있고, 또한 논리적 인 인덱스를 사용하여 조건이있는 행을 선택할 수 있습니다. 문법은 필요한 것에 따라'df [df.VAL_1 == "ABC"]. filter (regex = "^ COL"). shape [0]'과 같은 것이 될 것입니다. – Psidom