检查 df1 中的列 ['esn']。当发现两行之间存在任何差异时,生成另一个数据帧 df2。DF2 仅包含更改前和更改后的信息
>>> df1 = pd.DataFrame([[2014,1],[2015,1],[2016,1],[2017,2],[2018,2]],columns=['year','esn'])
>>> df1
year esn
0 2014 1
1 2015 1
2 2016 1
3 2017 2
4 2018 2
>>> df2 # new dataframe intended to create
year esn
0 2016 1
1 2017 2
无法在 DF2 中产生上述结果。提前感谢您的帮助。
创建布尔掩码 通过比较移位值 ne
表示不相等,并将第一个缺失值替换为 backfill
,类似的比较 随-1
移位,前向填充缺失值 - 按|
链表示bitwise OR
并按boolean indexing
过滤:
mask = df1['esn'].ne(df1['esn'].shift().bfill()) | df1['esn'].ne(df1['esn'].shift(-1).ffill())
df2 = df1[mask]
print (df2)
year esn
2 2016 1
3 2017 2