如何比较两行以及它们何时不同,然后创建另一个数据帧来复制这两行



检查 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

最新更新