首页 > 解决方案 > 比较熊猫数据框行

问题描述

我有一个像这样的数据框:

df = pd.DataFrame({30: {'2020-10-09': 12.79, '2020-10-12': 12.83, '2020-10-13': 12.88, '2020-10-14': 12.93, '2020-10-15': 12.99, '2020-10-16': 13.07, '2020-10-19': 13.16, '2020-10-20': 13.24, '2020-10-21': 13.32, '2020-10-22': 13.42}, 365: {'2020-10-09': 12.27, '2020-10-12': 12.27, '2020-10-13': 12.28, '2020-10-14': 12.29, '2020-10-15': 12.29, '2020-10-16': 13.07, '2020-10-19': 12.31, '2020-10-20': 12.32, '2020-10-21': 12.32, '2020-10-22': 12.33}})

我想找到所有列的值相等的行。我可以这样做,.loc但这意味着我必须对列名进行硬编码,我不想这样做,因为将来我可能会有更多列进行比较。我很接近

df.eq(df.iloc[:, 0], axis=0)

这使

             30     365
2020-10-09  True    False
2020-10-12  True    False
2020-10-13  True    False
2020-10-14  True    False
2020-10-15  True    False
2020-10-16  True    True
2020-10-19  True    False
2020-10-20  True    False
2020-10-21  True    False
2020-10-22  True    False

但我无法检索True每列中的行。我认为 usingdf[df.eq(df.iloc[:, 0], axis=0)]应该可以,但它会产生多索引错误。谢谢!

标签: pythonpandasdataframedata-wrangling

解决方案


您可以添加DataFrame.allfor test if allTrue并使用boolean indexing

df = df[df.eq(df.iloc[:, 0], axis=0).all(axis=1)]
print (df)
              30     365
2020-10-16  13.07  13.07

推荐阅读