사용자 정의 기능 f
와 groupby
필요
np.random.seed(100)
df2 = pd.DataFrame(np.random.randint(0,3,size=(10, 4)),columns=['ONE', 'TWO', 'CARS', 'FOUR'])
df2['NAMES'] = ['Peter','Jon','Mary','Mary','Peter','Peter','BONIFACE','Michael','Lucy','Gilari']
df2['CARS'] = ['Mercedes','BMW','Ford','BMW','BMW','Dacia','Ford','Pontiac','Chevrolet','Tesla']
print (df2)
ONE TWO CARS FOUR NAMES
0 0 0 Mercedes 2 Peter
1 2 0 BMW 1 Jon
2 2 2 Ford 2 Mary
3 1 0 BMW 0 Mary
4 0 2 BMW 1 Peter
5 1 2 Dacia 0 Peter
6 0 1 Ford 1 BONIFACE
7 0 0 Pontiac 1 Michael
8 1 2 Chevrolet 2 Lucy
9 1 1 Tesla 2 Gilari
df2.loc[(df2.CARS == 'BMW') & (df2.ONE == 2), 'FOUR'] = df2.TWO
print (df2)
ONE TWO CARS FOUR NAMES
0 0 0 Mercedes 2 Peter
1 2 0 BMW 0 Jon
2 2 2 Ford 2 Mary
3 1 0 BMW 0 Mary
4 0 2 BMW 1 Peter
5 1 2 Dacia 0 Peter
6 0 1 Ford 1 BONIFACE
7 0 0 Pontiac 1 Michael
8 1 2 Chevrolet 2 Lucy
9 1 1 Tesla 2 Gilari
또는 경우
이
2
경우 열에서 변경할 필요가 : (210)
def f(x):
if (x.name == 'BMW'):
x.loc[x.ONE == 2, 'FOUR'] = x.TWO
return x
agrupe = df2.groupby('CARS').apply(f)
print (agrupe)
ONE TWO CARS FOUR NAMES
0 0 0 Mercedes 2 Peter
1 2 0 BMW 0 Jon
2 2 2 Ford 2 Mary
3 1 0 BMW 0 Mary
4 0 2 BMW 1 Peter
5 1 2 Dacia 0 Peter
6 0 1 Ford 1 BONIFACE
7 0 0 Pontiac 1 Michael
8 1 2 Chevrolet 2 Lucy
9 1 1 Tesla 2 Gilari
더 나은 솔루션은 열 CARS
이 BMW
하고 열 ONE
이 2
입니다 모든 행을 선택하고 열 TWO
에 의해 FOUR
을 변경 처음이다 ONE
그래서 열을 FOUR
열로 변경하십시오 TWO
:
np.random.seed(13)
df2 = pd.DataFrame(np.random.randint(0,3,size=(10, 4)),columns=['ONE', 'TWO', 'CARS', 'FOUR'])
df2['NAMES'] = ['Peter','Jon','Mary','Mary','Peter','Peter','BONIFACE','Michael','Lucy','Gilari']
df2['CARS'] = ['Mercedes','BMW','Ford','BMW','BMW','Dacia','Ford','Pontiac','Chevrolet','Tesla']
print (df2)
ONE TWO CARS FOUR NAMES
0 2 0 Mercedes 0 Peter
1 2 2 BMW 1 Jon
2 0 2 Ford 0 Mary
3 2 2 BMW 2 Mary
4 1 1 BMW 1 Peter
5 0 2 Dacia 1 Peter
6 2 1 Ford 2 BONIFACE
7 0 0 Pontiac 0 Michael
8 2 2 Chevrolet 0 Lucy
9 1 1 Tesla 2 Gilari
df2.loc[df2.ONE == 2, 'FOUR'] = df2.TWO
print (df2)
ONE TWO CARS FOUR NAMES
0 2 0 Mercedes 0 Peter
1 2 2 BMW 2 Jon
2 0 2 Ford 0 Mary
3 2 2 BMW 2 Mary
4 1 1 BMW 1 Peter
5 0 2 Dacia 1 Peter
6 2 1 Ford 1 BONIFACE
7 0 0 Pontiac 0 Michael
8 2 2 Chevrolet 2 Lucy
9 1 1 Tesla 2 Gilari
'열 2에 2가있는 열에서 col 2의 값을 열 4에 지정하고 싶습니다. '? 'TWO' 열 또는 두번째 열 ='CARS'입니까? 게다가, 주어진 예가 ur가 말하는 것을 일치하지 않습니다 – MMF
죄송합니다, 제 모국어가 영어가 아닙니다. 나는 자동차로 그룹을 만든 다음 다른 칼럼의 값을 확인하고 칼 1을 말하게한다. 2 in col 1이있는 값은 col 2의 값을 col 4로 지정합니다. 이제는 더 분명 해졌기를 바랍니다. 고맙습니다. –
문제 없습니다. col2에 의해 열은 'TWO' 또는 df.columns [2]입니까? – MMF