programing

팬더의 이동 열 데이터 프레임이 하나씩 증가합니까?

mailnote 2023. 9. 3. 16:30
반응형

팬더의 이동 열 데이터 프레임이 하나씩 증가합니까?

판다 데이터 프레임을 가지고 있습니다.저는 제 칼럼 중 하나를 '래그'하고 싶습니다.예를 들어, 전체 열 'gdp'를 하나씩 위로 이동한 다음 나머지 행의 맨 아래에 있는 모든 초과 데이터를 제거하여 모든 열이 다시 동일한 길이가 되도록 하는 것을 의미합니다.

df =
    y  gdp  cap
0   1    2    5
1   2    3    9
2   8    7    2
3   3    4    7
4   6    7    7

df_lag =
    y  gdp  cap
0   1    3    5
1   2    7    9
2   8    4    2
3   3    7    7

어쨌든 이걸 하기 위해서요?

In [44]: df['gdp'] = df['gdp'].shift(-1)

In [45]: df
Out[45]: 
   y  gdp  cap
0  1    3    5
1  2    7    9
2  8    4    2
3  3    7    7
4  6  NaN    7

In [46]: df[:-1]                                                                                                                                                                                                                                                                                                               
Out[46]: 
   y  gdp  cap
0  1    3    5
1  2    7    9
2  8    4    2
3  3    7    7

이동 열 gdp 상승:

df.gdp = df.gdp.shift(-1)

마지막 행을 제거합니다.

먼저 열을 이동합니다.

df['gdp'] = df['gdp'].shift(-1)

두 번째로 NaN 셀이 포함된 마지막 행을 제거합니다.

df = df[:-1]

세 번째 인덱스 재설정:

df = df.reset_index(drop=True)

시간이 가고 있습니다.현재 Pandas 문서에서는 다음과 같이 권장하고 있습니다.

 df.loc[:, 'gdp'] = df.gdp.shift(-1)

예를 들어, 이동한 값의 수를 추적할 필요 없이 5개의 값을 쉽게 이동하고 NaN 행을 제거하려면 다음을 수행합니다.

d['gdp'] = df['gdp'].shift(-5)
df = df.dropna()
df.gdp = df.gdp.shift(-1) ## shift up
df.gdp.drop(df.gdp.shape[0] - 1,inplace = True) ## removing the last row

언급URL : https://stackoverflow.com/questions/20095673/shift-column-in-pandas-dataframe-up-by-one

반응형