Saya perlu menghapus tiga baris pertama dari dataframe di panda.
Saya tahu df.ix[:-1]
akan menghapus baris terakhir, tetapi saya tidak tahu cara menghapus n baris pertama.
Saya perlu menghapus tiga baris pertama dari dataframe di panda.
Saya tahu df.ix[:-1]
akan menghapus baris terakhir, tetapi saya tidak tahu cara menghapus n baris pertama.
Jawaban:
groupby()
? Ini berfungsi tetapi mengembalikan kolom duplikat dalam indeksdf=pd.DataFrame({'v':np.arange(10).tolist()*2,'g':['a']*10+['b']*10});df.groupby('g').apply(lambda x: x.iloc[3:])
df=df.iloc[3:9]
?
pd.concat()
. Sesuatu seperti df2 = pd.concat([df.iloc[:3],df.iloc[10:]])
,.
Saya pikir cara yang lebih eksplisit untuk melakukan ini adalah dengan menggunakan drop.
Sintaksnya adalah:
df.drop(label)
Dan seperti yang ditunjukkan oleh @tim dan @ChaimG, ini dapat dilakukan di tempat:
df.drop(label, inplace=True)
Salah satu cara untuk mengimplementasikan ini adalah:
df.drop(df.index[:3], inplace=True)
Dan penggunaan "di tempat" yang lain:
df.drop(df.head(3).index, inplace=True)
drop
bahkan dapat dihitung di tempat (tanpa tugas tambahan). Lebih cepat dan lebih sederhana!
df.drop(label, inplace=True)
Anda bisa menggunakan irisan python, tetapi perhatikan itu bukan di tempat.
In [15]: import pandas as pd
In [16]: import numpy as np
In [17]: df = pd.DataFrame(np.random.random((5,2)))
In [18]: df
Out[18]:
0 1
0 0.294077 0.229471
1 0.949007 0.790340
2 0.039961 0.720277
3 0.401468 0.803777
4 0.539951 0.763267
In [19]: df[3:]
Out[19]:
0 1
3 0.401468 0.803777
4 0.539951 0.763267
pandas
?
df.drop(df.index[[0,2]])
Panda menggunakan penomoran berbasis nol, jadi 0 adalah baris pertama, 1 adalah baris kedua dan 2 adalah baris ketiga.
inp0 = pd.read_csv ("bank_marketing_updated_v1.csv", skiprows = 2)
atau jika Anda ingin melakukannya dalam kerangka data yang ada
cukup lakukan perintah berikut
header=3
argumen konstruktor yang akan menetapkan baris itu sebagai baris header: stackoverflow.com/a/51822697/191246