Python 3.x 如何根据其他列的值变化提取列的值
我有两列的dataframe,我希望基于第二列提取第一列的值,如果在第2列的最后3行中,值从0变为任何值,则提取第1列的值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
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
最后过滤