簡體   English   中英

如何根據列值切片pandas數據幀?

[英]how to slice a pandas data frame according to column values?

我有一個pandas數據框,格式如下:

year    col1 
y1      val_1 
y1      val_2
y1      val_3
y2      val_4
y2      val_5
y2      val_6
y3      val_7
y3      val_8
y3      val_9

如何僅選擇直到第2年的值並省略第3年?

我需要一個new_data框架如下:

   year      col1 
    y1      val_1 
    y1      val_2
    y1      val_3
    y2      val_4
    y2      val_5
    y2      val_6

y1, y2, y3代表年份值

在您的示例數據集上,以下工作:

In [35]:

df.iloc[0:df[df.year == 'y3'].index[0]]
Out[35]:
  year   col1
0   y1  val_1
1   y1  val_2
2   y1  val_3
3   y2  val_4
4   y2  val_5
5   y2  val_6

所以打破這個,我們執行一個布爾索引來查找等於年值的行:

In [36]:

df[df.year == 'y3']
Out[36]:
  year   col1
6   y3  val_7
7   y3  val_8
8   y3  val_9

但我們對索引很感興趣,所以我們可以用它來切片:

In [37]:

df[df.year == 'y3'].index
Out[37]:
Int64Index([6, 7, 8], dtype='int64')

但是我們只需要切片的第一個值因此調用index[0] ,但是如果你已經按年值排序,那么只執行df[df.year < y3]會更簡單並且有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM