반응형
폴라-피톤에서 행을 내리는 방법
인덱싱을 사용하여 데이터 프레임의 길이 및 행 값 드롭과 같은 새로운 기능을 추가하는 방법. 인덱스 드롭 행 값을 사용하여 데이터 프레임에서 사용 가능한 행 수를 셀 수 있는 새 열을 추가하려고 합니다.
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가 해결책일 것이다,
반응형
'개발하자' 카테고리의 다른 글
유형 스크립트는 함수 본문에서 일반 유형을 사용할 수 있습니다 (0) | 2023.05.03 |
---|---|
파이썬을 사용하여 깃 푸시 프로세스를 자동화하는 방법은 무엇입니까? (0) | 2023.05.03 |
Svelte/Typescript 오류: 형식 선언 중 "예상치 못한 토큰" (0) | 2023.05.01 |
FastAPI: 멀티파트/폼 데이터 요청을 사용하지 않고 파일을 업로드하는 방법은 무엇입니까? (0) | 2023.05.01 |
리벳의 상태 기계를 펄럭이는 방법은 무엇입니까? (0) | 2023.04.30 |