Tôi cần xóa ba hàng đầu tiên của khung dữ liệu trong gấu trúc.
Tôi biết df.ix[:-1]
sẽ xóa hàng cuối cùng, nhưng tôi không thể tìm ra cách xóa n hàng đầu tiên.
Tôi cần xóa ba hàng đầu tiên của khung dữ liệu trong gấu trúc.
Tôi biết df.ix[:-1]
sẽ xóa hàng cuối cùng, nhưng tôi không thể tìm ra cách xóa n hàng đầu tiên.
Câu trả lời:
groupby()
? Điều này hoạt động nhưng trả về các cột trùng lặp trong chỉ mụcdf=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()
. Một cái gì đó như , df2 = pd.concat([df.iloc[:3],df.iloc[10:]])
.
Tôi nghĩ rằng một cách rõ ràng hơn để làm điều này là sử dụng thả.
Cú pháp là:
df.drop(label)
Và như được chỉ ra bởi @tim và @ChaimG, điều này có thể được thực hiện tại chỗ:
df.drop(label, inplace=True)
Một cách để thực hiện điều này có thể là:
df.drop(df.index[:3], inplace=True)
Và một cách sử dụng "tại chỗ" khác:
df.drop(df.head(3).index, inplace=True)
drop
thậm chí có thể được tính tại chỗ (không cần gán thêm). Nhanh hơn và đơn giản hơn!
df.drop(label, inplace=True)
df = df.iloc[n:]
n giảm n hàng đầu tiên.
Bạn có thể sử dụng cắt trăn, nhưng lưu ý rằng nó không tại chỗ.
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
gì?
df.drop(df.index[[0,2]])
Pandas sử dụng đánh số dựa trên số 0, vì vậy 0 là hàng đầu tiên, 1 là hàng thứ hai và 2 là hàng thứ ba.
header=3
đối số hàm tạo sẽ đặt hàng đó làm hàng tiêu đề: stackoverflow.com/a/51822697/191246