python - Pandas Dataframe:如何比较一行中两列中的值是否等于后续行相同列中的值?
问题描述
假设我有一个这样的数据框
Fruit Color Weight
apple red 50
apple red 75
apple green 45
orange orange 80
orange orange 90
orange red 90
我想根据第 x 行的水果和颜色等于第 x+1 行的水果和颜色的事实添加一个具有 True 或 False 的列,如下所示:
Fruit Color Weight Validity
apple red 50 True
apple red 75 False
apple green 45 False
orange orange 80 True
orange orange 90 False
orange red 90 False
我尝试了以下方法,但我猜有一些错误,我得到了错误的结果:
g['Validity'] = (g[['Fruit', 'Color']] == g[['Fruit', 'Color']].shift()).any(axis=1)
解决方案
您对移位比较有正确的想法,但是您需要向后移位,以便将当前行与下一行进行比较。最后使用一个all
条件来强制所有列在一行中相等:
df['Validity'] = df[['Fruit', 'Color']].eq(df[['Fruit', 'Color']].shift(-1)).all(axis=1)
df
Fruit Color Weight Validity
0 apple red 50 True
1 apple red 75 False
2 apple green 45 False
3 orange orange 80 True
4 orange orange 90 False
5 orange red 90 False
推荐阅读
- amazon-web-services - kafka消费者——长途
- python - 如何获取未在 gcp 中安装 stackdriver 监控代理的实例列表?
- excel - 使用多个条件将数据从工作表复制到工作表
- c# - 当异步控制器具有等待并仍在从数据库加载数据的方法时,页面加载是否停止
- arduino - 如何更改热敏打印机的默认波特率?(CSN-A1)
- python - Python:读取 csv 文件(无库)
- amazon-web-services - ECS 容器无法使用 AWS KMS 密钥,因为访问被拒绝
- python - 更改当前工作目录时出错
- database - 参考多的文档与参考文档的多
- spring-boot - Spring Boot 审计@Query