Python 3.x 如何根据其他列的值变化提取列的值

Python 3.x 如何根据其他列的值变化提取列的值,python-3.x,pandas,numpy,Python 3.x,Pandas,Numpy,我有两列的dataframe,我希望基于第二列提取第一列的值,如果在第2列的最后3行中,值从0变为任何值,则提取第1列的值 df=pd.DataFrame({'column1':[1,5,6,7,8,11,12,14,18,20],'column2':[0,0,1,1,0,0,0,256,256,0]}) print(df) column1 column2 0 1 0 1 5 0 2 6 1 3

我有两列的dataframe,我希望基于第二列提取第一列的值,如果在第2列的最后3行中,值从0变为任何值,则提取第1列的值

df=pd.DataFrame({'column1':[1,5,6,7,8,11,12,14,18,20],'column2':[0,0,1,1,0,0,0,256,256,0]})
print(df)
   column1  column2
0        1        0
1        5        0
2        6        1
3        7        1
4        8        0
5       11        0
6       12        0
7       14      256
8       18      256
9       20        0

out_put=pd.DataFrame({'column1':[20],'column2':[0]})

print(out_put)
   column1  column2
0       20        0

我相信您需要检查第二列最后3个值中最后一个值与第一个值之间的差异:

df1 = df.tail(3)
df2 = df1[df1['column2'].eq(0).view('i1').diff().eq(1)]

print (df2)
   column1  column2
9       20        0
详细信息

#last 3 rows
print (df1)
   column1  column2
7       14      256
8       18      256
9       20        0

#compare second colum for equality
print (df1['column2'].eq(0))
7    False
8    False
9     True
Name: column2, dtype: bool

#convert mask to integers
print (df1['column2'].eq(0).view('i1'))
7    0
8    0
9    1
Name: column2, dtype: int8


和最后一个筛选依据。

我相信您需要检查第二列最后3个值与最后一个值之间的差异:

df1 = df.tail(3)
df2 = df1[df1['column2'].eq(0).view('i1').diff().eq(1)]

print (df2)
   column1  column2
9       20        0
详细信息

#last 3 rows
print (df1)
   column1  column2
7       14      256
8       18      256
9       20        0

#compare second colum for equality
print (df1['column2'].eq(0))
7    False
8    False
9     True
Name: column2, dtype: bool

#convert mask to integers
print (df1['column2'].eq(0).view('i1'))
7    0
8    0
9    1
Name: column2, dtype: int8

最后过滤