Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to drop row in polars-python [closed]

How to add new feature like length of data frame & Drop rows value using indexing. I want to a add a new column where I can count the no-of rows available in a data frame, & using indexing drop rows value.

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)
like image 393
Hrushi Avatar asked Feb 11 '26 00:02

Hrushi


1 Answers

Polars doesn't allow much mutation and favors pure data handling. Meaning that you create a new DataFrame instead of modifying an existing one.

So it helps to think of the data you want to keep instead of the row you want to remove.

Below I have written an example that keeps all data except for the 2nd row. Note that the slice will be the fastest of the two and will have zero data copy.

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

print(df)

# filter on condition
df_a = df.filter(pl.col("index") != 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.equals(df_b)

print(df_a)

Outputs:

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

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

like image 147
ritchie46 Avatar answered Feb 12 '26 15:02

ritchie46



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!