Python menghapus nol dari kerangka data

Dalam posting ini, kita akan belajar memeriksa apakah semua nilai kolom DataFrame adalah 0 atau tidak. Kami akan menggunakan nama kolom untuk itu

Pertama, buat Pandas DataFrame

Kita perlu membuat Bingkai Data dengan banyak kolom dan baris di mana kita akan memeriksa apakah kolom hanya memiliki nilai nol

import pandas as pd

employees = [
    ['Robin', 30, 0, 'India'],
    ['Rick', 35, 0, 'US'],
    ['Tony Stark', 24, 0, 'US'],
    ['Roney', 24, 0, 'Canada'],
    ['Sumit', 24, 0, 'India'],
    ['Parek Bisth', 24, 0, 'India']
]

# create dataframe
df = pd.DataFrame(employees, columns=['Name', 'Age', 'PeerCount', 'Country'])

print(df)

Keluaran

          Name  Age  PeerCount Country
0        Robin   30          0   India
1         Rick   35          0      US
2   Tony Stark   24          0      US
3        Roney   24          0  Canada
4        Sumit   24          0   India
5  Parek Bisth   24          0   India
_

Periksa apakah kolom hanya berisi 0 nilai

Kami akan menggunakan fungsi all() untuk memeriksa apakah kolom hanya berisi baris bernilai nol. Kami akan menggunakan kode di bawah ini untuk memeriksanya

Untuk menghapus nol di depan kolom di pyspark, kami menggunakan fungsi regexp_replace() dan kami menghapus nol di depan yang berurutan. Mari kita lihat contoh tentang cara menghapus angka nol di depan kolom di pyspark

  • Hapus Leading Zeros dari kolom di pyspark

Kami akan menggunakan kerangka data df

Python menghapus nol dari kerangka data

 

Hapus nol kolom di depan di pyspark

Kami menggunakan fungsi dengan nama kolom dan ekspresi reguler sebagai argumen dan dengan demikian kami menghapus angka nol di depan secara berurutan. Ekspresi reguler menggantikan semua nol di depan dengan ' '. lalu simpan hasilnya di grad_score_new

Saya sudah melihat jawaban yang bagus dari @Epsi95, Anda bahkan dapat mencoba dengan set karakter dengan regex

>>> df['amount'].str.replace(r'^[0]*', '', regex=True).fillna('0')
0     324
1    S123
2      10
3       0
4      30
5    SA40
6    SA24

Penjelasan

^[0]*

^ asserts position at start of a line
Match a single character present in the list below [0]
* matches the previous token between zero and unlimited times, as many times as possible, giving back as needed (greedy)

Sebagai alternatif, Anda juga dapat mencapai penurunan baris dengan memfilter baris dan menugaskannya ke DataFrame lain

1. Contoh Cepat Hapus Baris Pandas Berdasarkan Nilai Kolom

Jika Anda sedang terburu-buru, di bawah ini adalah beberapa contoh cepat panda menghapus baris berdasarkan nilai kolom


# Quick Examples

#Using drop() to delete rows based on column value
df.drop(df[df['Fee'] >= 24000].index, inplace = True)

# Remove rows
df2 = df[df.Fee >= 24000]

# If you have space in column name
# Specify column name with in single quotes
df2 = df[df['column name']]

# Using loc
df2 = df.loc[df["Fee"] >= 24000 ]

# Delect rows based on multiple column value
df2 = df[ (df['Fee'] >= 22000) & (df['Discount'] == 2300)]

# Drop rows with None/NaN
df2 = df[df.Discount.notnull()]
_

Mari buat DataFrame dengan beberapa baris dan kolom dan jalankan beberapa contoh untuk mempelajari cara menghapus baris DataFrame. DataFrame kami berisi nama kolom


# Create pandas DataFrame
import pandas as pd
import numpy as np
technologies = {
    'Courses':["Spark","PySpark","Hadoop","Python"],
    'Fee' :[22000,25000,np.nan,24000],
    'Duration':['30day',None,'55days',np.nan],
    'Discount':[1000,2300,1000,np.nan]
          }
df = pd.DataFrame(technologies)
print(df)
6,

# Create pandas DataFrame
import pandas as pd
import numpy as np
technologies = {
    'Courses':["Spark","PySpark","Hadoop","Python"],
    'Fee' :[22000,25000,np.nan,24000],
    'Duration':['30day',None,'55days',np.nan],
    'Discount':[1000,2300,1000,np.nan]
          }
df = pd.DataFrame(technologies)
print(df)
7,

# Create pandas DataFrame
import pandas as pd
import numpy as np
technologies = {
    'Courses':["Spark","PySpark","Hadoop","Python"],
    'Fee' :[22000,25000,np.nan,24000],
    'Duration':['30day',None,'55days',np.nan],
    'Discount':[1000,2300,1000,np.nan]
          }
df = pd.DataFrame(technologies)
print(df)
8, dan

# Create pandas DataFrame
import pandas as pd
import numpy as np
technologies = {
    'Courses':["Spark","PySpark","Hadoop","Python"],
    'Fee' :[22000,25000,np.nan,24000],
    'Duration':['30day',None,'55days',np.nan],
    'Discount':[1000,2300,1000,np.nan]
          }
df = pd.DataFrame(technologies)
print(df)
9


# Create pandas DataFrame
import pandas as pd
import numpy as np
technologies = {
    'Courses':["Spark","PySpark","Hadoop","Python"],
    'Fee' :[22000,25000,np.nan,24000],
    'Duration':['30day',None,'55days',np.nan],
    'Discount':[1000,2300,1000,np.nan]
          }
df = pd.DataFrame(technologies)
print(df)

Hasil di bawah output


   Courses      Fee Duration  Discount
0    Spark  22000.0    30day    1000.0
1  PySpark  25000.0     None    2300.0
2   Hadoop      NaN   55days    1000.0
3   Python  24000.0      NaN       NaN

2. Hapus Baris Berdasarkan Nilai Kolom

Metode


# Create pandas DataFrame
import pandas as pd
import numpy as np
technologies = {
    'Courses':["Spark","PySpark","Hadoop","Python"],
    'Fee' :[22000,25000,np.nan,24000],
    'Duration':['30day',None,'55days',np.nan],
    'Discount':[1000,2300,1000,np.nan]
          }
df = pd.DataFrame(technologies)
print(df)
5 mengambil beberapa parameter yang membantu Anda menghapus baris dari DataFrame dengan memeriksa nilai kolom. Ketika ekspresi puas, ia mengembalikan True yang sebenarnya menghapus baris


df.drop(df[df['Fee'] >= 24000].index, inplace = True)
print(df)

Hasil di bawah output


  Courses      Fee Duration  Discount
0   Spark  22000.0    30day    1000.0
2  Hadoop      NaN   55days    1000.0

Setelah menghapus baris, selalu disarankan untuk mengatur ulang indeks baris

2. Menggunakan lokasi[]

Sebagai alternatif, Anda juga dapat mencoba pendekatan lain yang paling sering digunakan untuk menghapus baris berdasarkan nilai kolom menggunakan loc[] dan df[]

Perhatikan bahwa metode ini sebenarnya memfilter data, dengan meniadakan ini, Anda akan mendapatkan hasil yang diinginkan


# Remove row
df2 = df[df.Fee >= 24000]
print(df2)

#Using loc[]
df2 = df.loc[df["Fee"] >= 24000 ]
print(df2)

Menghasilkan output yang sama seperti di atas.


   Courses      Fee Duration  Discount
1  PySpark  25000.0     None    2300.0
3   Python  24000.0      NaN       NaN

3. Hapus Baris Berdasarkan Beberapa Nilai Kolom

Terkadang Anda mungkin perlu menghapus baris berdasarkan nilai yang cocok dari beberapa kolom


# Delect rows based on multiple column value
df = pd.DataFrame(technologies)
df = df[ (df['Fee'] >= 22000) & (df['Discount'] == 2300)]
print(df)

Hasil di bawah output


   Courses      Fee Duration  Discount
1  PySpark  25000.0     None    2300.0

4. Hapus Baris Berdasarkan Nilai Kolom Tidak Ada atau NaN

Saat Anda memiliki nilai Tidak Ada atau NaN pada kolom, Anda mungkin perlu menghapusnya sebelum menerapkan beberapa perhitungan. Anda dapat melakukan ini menggunakan fungsi


   Courses      Fee Duration  Discount
0    Spark  22000.0    30day    1000.0
1  PySpark  25000.0     None    2300.0
2   Hadoop      NaN   55days    1000.0
3   Python  24000.0      NaN       NaN
1

Catatan. Dengan nilai Tidak Ada atau NaN Anda tidak dapat menggunakan == atau. = operator


# Drop rows with None/NaN values
df2 = df[df.Discount.notnull()]
print(df2)

Hasil di bawah output


# Create pandas DataFrame
import pandas as pd
import numpy as np
technologies = {
    'Courses':["Spark","PySpark","Hadoop","Python"],
    'Fee' :[22000,25000,np.nan,24000],
    'Duration':['30day',None,'55days',np.nan],
    'Discount':[1000,2300,1000,np.nan]
          }
df = pd.DataFrame(technologies)
print(df)
0

5. menggunakan kueri()

Anda juga dapat menghapus baris dengan menggunakan metode query(). Perhatikan bahwa metode ini sebenarnya memfilter baris dari pandas DataFrame, dengan meniadakan ini, Anda dapat menghapus baris tersebut


# Create pandas DataFrame
import pandas as pd
import numpy as np
technologies = {
    'Courses':["Spark","PySpark","Hadoop","Python"],
    'Fee' :[22000,25000,np.nan,24000],
    'Duration':['30day',None,'55days',np.nan],
    'Discount':[1000,2300,1000,np.nan]
          }
df = pd.DataFrame(technologies)
print(df)
1

6. Berdasarkan Kebalikan Nilai Kolom

Jika Anda perlu drop() semua baris yang tidak sama dengan nilai yang diberikan untuk kolom. panda menawarkan operasi negasi (~) untuk menjalankan fitur ini. Untuk E. x.


   Courses      Fee Duration  Discount
0    Spark  22000.0    30day    1000.0
1  PySpark  25000.0     None    2300.0
2   Hadoop      NaN   55days    1000.0
3   Python  24000.0      NaN       NaN
_2


# Create pandas DataFrame
import pandas as pd
import numpy as np
technologies = {
    'Courses':["Spark","PySpark","Hadoop","Python"],
    'Fee' :[22000,25000,np.nan,24000],
    'Duration':['30day',None,'55days',np.nan],
    'Discount':[1000,2300,1000,np.nan]
          }
df = pd.DataFrame(technologies)
print(df)
2

Hasil di bawah output


# Create pandas DataFrame
import pandas as pd
import numpy as np
technologies = {
    'Courses':["Spark","PySpark","Hadoop","Python"],
    'Fee' :[22000,25000,np.nan,24000],
    'Duration':['30day',None,'55days',np.nan],
    'Discount':[1000,2300,1000,np.nan]
          }
df = pd.DataFrame(technologies)
print(df)
_3

7. Contoh Lengkap


# Create pandas DataFrame
import pandas as pd
import numpy as np
technologies = {
    'Courses':["Spark","PySpark","Hadoop","Python"],
    'Fee' :[22000,25000,np.nan,24000],
    'Duration':['30day',None,'55days',np.nan],
    'Discount':[1000,2300,1000,np.nan]
          }
df = pd.DataFrame(technologies)
print(df)
_4

Kesimpulan

Pada artikel ini, Anda telah mempelajari cara menghapus baris DataFrame berdasarkan nilai kolom menggunakan berbagai cara

Bagaimana Anda menghapus angka nol dari DataFrame dengan Python?

Untuk menghapus baris dengan semua nol di df. .
df[~(df == 0). semua(sumbu=1)] A B. sebuah 0 5. c 4 7
(df ​​== 0) A B. Benar Salah. b Benar Benar. c Salah Salah
(df ​​== 0). semua(sumbu=1) a Salah. b Benar. c Salah. dtype. bool
~(df == 0). semua(sumbu=1) a Benar. b Salah. c Benar. dtype. bool
df[~(df == 0). semua(sumbu=1)] A B. sebuah 0 5. c 4 7

Bagaimana cara menghapus baris nol dari DataFrame?

Untuk menghapus baris pertama, Anda dapat menggunakan df. jatuhkan(df. index[0]) , dan untuk menghapus baris terakhir gunakan df. jatuhkan (df.

Bagaimana cara menghapus nol dari kolom dengan Python?

int() metode untuk menghapus angka nol di depan dengan Python . Saat mengonversi, itu akan secara otomatis menghapus angka nol di depan dalam string. Perhatikan bahwa string hanya boleh berisi angka dan tanpa huruf, abjad, atau simbol lainnya.

Apa drop na dan 0 di panda?

Fungsi dropna() digunakan untuk menghapus nilai yang hilang. Tentukan apakah baris atau kolom yang berisi nilai yang hilang akan dihapus. 0, atau 'indeks'. Jatuhkan baris yang berisi nilai yang hilang . 1, atau 'kolom'. Jatuhkan kolom yang berisi nilai yang hilang.