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