열 'side'
의 해당 값이 'B'인 행 'nominal'
의 행의 음수 값을 변환하려고합니다. 나는 변환되지 않은 행을 잃고 싶지 않습니다. 나는 아래이 시도했지만 KeyError('%s not in index' % objarr[mask])
Pandas Dataframe의 다른 열의 내용을 기반으로 한 열에서 연산 실행
df[-df['nominal']].where(df['side']=='B')
열 'side'
의 해당 값이 'B'인 행 'nominal'
의 행의 음수 값을 변환하려고합니다. 나는 변환되지 않은 행을 잃고 싶지 않습니다. 나는 아래이 시도했지만 KeyError('%s not in index' % objarr[mask])
Pandas Dataframe의 다른 열의 내용을 기반으로 한 열에서 연산 실행
df[-df['nominal']].where(df['side']=='B')
당신이 시도해야합니다
df.loc[ (df.side == 'B'), 'nominal' ] *= -1
아래에 이미 제시 한 답변과 동일하다는 점을 감안할 때 무엇을 묻는 메시지가 표시됩니까? – miradulo
그냥 &
와 부울 인덱스에 두 조건을 사용하여 인상하기.
df[(df.side == 'B') & (df.nominal < 0)]
또는 수정에 대한하려는 경우,
df.loc[(df.side == 'B') & (df.nominal < 0), 'nominal']
예
>>> df = pd.DataFrame(dict(side=['A']*3+['B']*3, nominal = [1, -2, -2, 2, 6, -5]))
>>> df
nominal side
0 1 A
1 -2 A
2 -2 A
3 2 B
4 6 B
5 -5 B
>>> df.loc[(df.side == 'B') & (df.nominal < 0), 'nominal'] = 1000
>>> df
nominal side
0 1 A
1 -2 A
2 -2 A
3 2 B
4 6 B
5 1000 B
이것은 자주 건너 것이다 팬더의 필터링 데이터에 대한 매우 표준적인 방법이다. 팬더 문서의 Boolean Indexing을 참조하십시오. 업데이트 된 문제에 대한 설명
업데이트
, 우리는 -1로 우리의 원하는 값을 곱 증강 할당 연산자 *=
를 사용할 수 있습니다.
df.loc[(df.side == 'B'), 'nominal'] *= -1
예
>>> df = pd.DataFrame(dict(nominal = [1, 2, 5, 3, 5, 3], side=['A']*3 + ['B']*3))
>>> df
nominal side
0 1 A
1 2 A
2 5 A
3 3 B
4 5 B
5 3 B
>>> df.loc[(df.side == 'B'), 'nominal'] *= -1
df
nominal side
0 1 A
1 2 A
2 5 A
3 -3 B
4 -5 B
5 -3 B
당신이 샘플 dataframe를 게시 할 수 있을까요? 그것은 그것없이 당신의 예를 통해 걷는 것이 어렵습니다. 또한 "음수 값 변환 시도"에 대해 언급 할 때 변환 대상은 무엇입니까? 그들에게''B ''를 만들려고하십니까? – MattR