pandas dataframe 在某些索引之前获取行

pandas dataframe take rows before certain indexes

我有一个数据框和一个索引列表,我想得到一个新的数据框,这样对于每个索引(从给定的最后一个),我将获取与索引处的给定列。

      C1 C2 C3
0     1  2  A
1     3  4  A
2     5  4  A
3     7  5  B
4     9  7  C
5     2  3  D
6     1  1  D

列 c3 索引(行号)2、4、5 我的新数据框将是:

     C1 C2 C3
0     1  2  A
1     3  4  A
2     5  4  A
4     9  7  C
5     2  3  D

解释:

对于索引 2,选择了第 0、1、2 行,因为 C3 在所有这些行中都相等。

对于索引 4,前面的行均无效。

并且对于索引 5,前面的行也没有有效,并且第 6 行不相关,因为它不在前面。 最好的方法是什么?

如果您只想前面的行匹配条件,您可以设置条件来过滤数据。

ind= 2
col ='C3'
# ".loc[np.arange(ind+1)]" creates indexes till preceding row, so rest of matching conditions can be ignored 
df.loc[df.loc[ind][col] == df[col]].loc[np.arange(ind+1)].dropna()

输出:

   C1   C2  C3
0   1   2   A
1   3   4   A
2   5   4   A

申请其他专栏

ind= 2
col ='C2'
df.loc[df.loc[ind][col] == df[col]].loc[np.arange(ind+1)].dropna()

输出:

   C1   C2  C3
1   3.0 4.0 A
2   5.0 4.0 A