df.groupby
그룹의 모든 행에 대해 열에 음수 값이있는 행만 만들고 유지 하려고합니다 .
예를 들어 다음과 같은 데이터 프레임이 있습니다.
df = pd.DataFrame({'name':['Lucas','Marie','Lucy','Lucas','Marie','Lucas','Phil','Marie','Marie','Lucy','Lucas']})
df['rand'] = np.random.randint(-5, 2, df.shape[0])
df
name rand
0 Lucas -1
1 Marie -5
2 Lucy -4
3 Lucas -2
4 Marie -1
5 Lucas -3
6 Phil 0
7 Marie 1
8 Marie -4
9 Lucy 0
10 Lucas -1
나는 df.groupby('name')
모든 값이 df['rand']<0
. 이 경우 'rand'열에 모든 음수 값이있는 유일한 이름이므로 'Lucas'만 유지합니다.
내 목표 출력은 다음과 같습니다.
name rand
0 Lucas -1
3 Lucas -2
5 Lucas -3
10 Lucas -1
일반적으로 나는 할 df= df[df['rand']<0]
것이지만 논리적으로 여기서는 일을하지 않을 것입니다.
어떻게 할 수 있습니까?
감사!!
먼저 아래 항목을 확인한 0
다음으로 부울 계열을 그룹화 df['name']
하고 변환 할 수 all
있습니다. 그런 다음 결과를 사용하여 데이터 프레임을 인덱싱합니다.
df[df.rand.lt(0).groupby(df.name).transform('all')]
name rand
0 Lucas -1
3 Lucas -2
5 Lucas -3
10 Lucas -1
유사한 경우를 단순화하는 일반적인 절차 :
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다