Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python - Pandas DataFrame에서 음수 값을 최신 이전 양수 값으로 바꾸기

<시간/>

음수 값을 가장 최근의 양수 값으로 바꾸고 싶습니다. 이를 통해 양수 선행 값이 없으면 값이 0으로 업데이트되어야 합니다.

입력

예를 들어, 입력은 -

DataFrame:  
One  two
0  -2   -3
1   4   -7
2   6    5
3   0   -9

출력

출력은 다음과 같아야 합니다. -

   One two
0   0   0
1   7   0
2   4   2
3   0   2

데이터 프레임 마스킹은 음수 값을 대체하는 데 사용됩니다. 누락된 값을 채우기 위해 정방향 채우기를 사용했습니다. 먼저 pandas 데이터 프레임을 생성해 보겠습니다 -

# create pandas dataframe
df = pd.DataFrame({'One': [-3, 7, 4, 0], 'two': [-6, -1, 2, -8]})

마스킹을 해보자 -

df = df.mask(df.lt(0)).ffill().fillna(0).astype('int32')

예시

다음은 코드입니다 -

import pandas as pd

# create pandas dataframe
df = pd.DataFrame({'One': [-3, 7, 4, 0],'two': [-6, -1, 2, -8]})

# displaying the DataFrame
print"DataFrame: \n",df

# masking
df = df.mask(df.lt(0)).ffill().fillna(0).astype('int32')

# displaying the updated DataFrame
print"\nUpdated DataFrame: \n",df

출력

이것은 다음과 같은 출력을 생성합니다 -

DataFrame:
   One   two
0   -3   -6
1    7   -1
2    4    2
3    0   -8
Updated DataFrame:
   One   two
0    0    0
1    7    0
2    4    2
3    0    2