我正在寻找一种简单的方法来从pandas数据框df中选择特定值。
我的df行如下所示:已进行编辑以使其更清晰
('df_c', index edge_id source target dist length offset ep
0 0 3993733 2072680 3740467 7.400719 66.983482 50.293263 0.989106
1 0 9337850 3740467 2072680 7.400719 66.983482 16.690219 0.989106
2 0 3993735 3740467 3740468 18.257438 51.693102 0.000000 0.935507
3 0 3993736 3740467 3740470 18.257438 80.415746 0.000000 0.935507
4 0 9337852 3740468 3740467 18.257438 51.693102 51.693102 0.935507
5 0 9337853 3740470 3740467 18.257438 80.415746 80.415746 0.935507
6 0 4917163 5293212 5474940 50.474509 113.242490 47.964551 0.600775
7 0 10261280 5474940 5293212 50.474509 113.242490 65.277939 0.600775
8 1 3993733 2072680 3740467 8.627149 66.983482 56.266520 0.985225
9 1 9337850 3740467 2072680 8.627149 66.983482 10.716962 0.985225
10 1 3993735 3740467 3740468 10.319909 51.693102 9.098376 0.978925
11 1 9337852 3740468 3740467 10.319909 51.693102 42.594727 0.978925
12 1 3993736 3740467 3740470 13.757942 80.415746 0.000000 0.962851
13 1 9337853 3740470 3740467 13.757942 80.415746 80.415746 0.962851
14 1 4565277 2072680 2072681 56.667011 53.626811 5.403604 0.526118
15 1 9909394 2072681 2072680 56.667011 53.626811 48.223207 0.526118)
我的目标是选择每个具有新索引的行[1](df [“ index”])。所以这将是df.index 0、8,依此类推...
还有另一种可能的方法,而不是遍历整个df并检查row [1](df [“ index”])上的索引变化吗?
我知道有一种方法可以像这样选择每第n行:df.iloc [0 :: n,:],但是row [1]上的索引更改(df [“ index”])并没有总是相同的顺序...
答案 0 :(得分:0)
您应该能够使用诸如shift之类的方法来提取一组行。像
df[(df.column1 - df.column1.shift(1)) >= 1]
似乎可以正常工作。请注意,平移通常与您要进行比较的方向相反,因为您不是一一比较它们,而是要创建矢量的平移版本,然后立即比较整个矢量。为了使当前值和先前值对齐以进行比较,您必须将向量 forward 移到同一样本上才能获得两个值。