본문 바로가기

개발하자

폴라-피톤에서 행을 내리는 방법

반응형

폴라-피톤에서 행을 내리는 방법

인덱싱을 사용하여 데이터 프레임의 길이 및 행 값 드롭과 같은 새로운 기능을 추가하는 방법. 인덱스 드롭 행 값을 사용하여 데이터 프레임에서 사용 가능한 행 수를 셀 수 있는 새 열을 추가하려고 합니다.

for i in range(len(df)):
    if (df['col1'][i] == df['col2'][i]) and (df['col4'][i] == df['col3'][i]):
        pass
    elif (df['col1'][i] == df['col3'][i]) and (df['col4'][i] == df['col2'][i]): 
        df['col1'][i] = df['col2'][i]
        df['col4'][i] = df['col3'][i]
    else:
       df = df.drop(i)



폴라는 많은 돌연변이를 허용하지 않고 순수한 데이터 처리를 선호한다. 기존 항목을 수정하는 대신 새 항목을 생성하는 것을 의미합니다.

따라서 제거할 행 대신 보관할 데이터를 생각하는 것이 좋습니다.

아래에 두 번째 행을 제외한 모든 데이터를 보관하는 예제를 작성했습니다. 이 둘 중에서 가장 빠르며 데이터 복사가 0입니다.

df = pl.DataFrame({
    "a": [1, 2, 3],
    "b": [True, False, None]
}).with_row_count("row_nr")

print(df)

# filter on condition
df_a = df.filter(pl.col("row_nr") != 1)

# stack two slices
df_b = df[:1].vstack(df[2:])

# or via explicit slice syntax
df_b = df.slice(0, 1).vstack(df.slice(2, -1))

assert df_a.frame_equal(df_b)

print(df_a)

출력:

shape: (3, 3)
┌────────┬─────┬───────┐
│ row_nr ┆ a   ┆ b     │
│ ---    ┆ --- ┆ ---   │
│ u32    ┆ i64 ┆ bool  │
╞════════╪═════╪═══════╡
│ 0      ┆ 1   ┆ true  │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌┤
│ 1      ┆ 2   ┆ false │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌┤
│ 2      ┆ 3   ┆ null  │
└────────┴─────┴───────┘
shape: (2, 3)
┌────────┬─────┬──────┐
│ row_nr ┆ a   ┆ b    │
│ ---    ┆ --- ┆ ---  │
│ u32    ┆ i64 ┆ bool │
╞════════╪═════╪══════╡
│ 0      ┆ 1   ┆ true │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌┤
│ 2      ┆ 3   ┆ null │
└────────┴─────┴──────┘




아마도 df.filter가 해결책일 것이다,


반응형