2024-06-09 05:53:49 发布
网友
我有一个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年?
我需要一个新的数据帧,如下所示:
year col1 y1 val_1 y1 val_2 y1 val_3 y2 val_4 y2 val_5 y2 val_6
y1, y2, y3表示年份值
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
因此,将其分解,我们执行一个布尔索引来查找与year值相等的行:
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[df.year < y3]将更简单,也更有效。
index[0]
df[df.year < y3]
在您的示例数据集中,以下操作有效:
因此,将其分解,我们执行一个布尔索引来查找与year值相等的行:
但我们对索引感兴趣,所以我们可以用它来切片:
但是我们只需要第一个值来进行切片,因此调用
index[0]
,但是如果df已经按年份值排序,那么只执行df[df.year < y3]
将更简单,也更有效。相关问题 更多 >
编程相关推荐