나는 이것에 붙어 있고 비슷한 게시물이 나를 위해 약간의 블랙홀을 만들고 있습니다. 아직 배우는 중 ..
조건을 충족하는 그룹의 평균을 취하고 싶습니다. 내 데이터는 다음과 같습니다.
user date Flag Value
0 ron 12/23/2016 'flag' 10
1 ron 12/21/2016 'n/a' 25
2 ron 12/23/2016 'flag' 10
3 ron 12/21/2016 'n/a' 3
4 andy 12/22/2016 'flag' 5
5 andy 12/22/2016 'flag' 1
사용자 + 플래그를 그룹화하고 '플래그'의 평균 값만 사용하는 새 열 'Avg'를 만들고 싶습니다. 따라서 데이터는 다음과 같습니다.
user date Flag Value Avg
0 ron 12/23/2016 'flag' 10 10
1 ron 12/21/2016 'n/a' 25 10
2 ron 12/23/2016 'flag' 10 10
3 ron 12/21/2016 'n/a' 3 10
4 andy 12/22/2016 'flag' 5 3
5 andy 12/22/2016 'flag' 1 3
나는 이와 같은 것을 가지고 있지만 많은 다른 변형을 시도했습니다.
groups = sample.groupby(['user','Flag'])
flag = sample.groupby(['user','Flag'])['Value'].transform('mean')
sample.loc[:,'Avg'] = np.select([flag.eq('flag'), groups.transform('mean')])
지도 감사합니다 ..
groupby
및 map
다음 과 같은 솔루션이 있습니다 .
df['Avg'] = df['user'].map(df[df['Flag']=="'flag'"] # use "flag" only if you don't have `'` in the data'
.groupby('user')['Value'].mean())
산출:
user date Flag Value Avg
0 ron 12/23/2016 'flag' 10 10
1 ron 12/21/2016 'n/a' 25 10
2 ron 12/23/2016 'flag' 10 10
3 ron 12/21/2016 'n/a' 3 10
4 andy 12/22/2016 'flag' 5 3
5 andy 12/22/2016 'flag' 1 3
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다