python - groupby 日期并检查多列中的值是否相等
问题描述
我有一个具有以下格式的数据框
X Y date
0 10.0 NaN 2018-12-27
1 20.0 40.0 2018-12-27
2 15.0 NaN 2018-12-24
3 NaN 20.0 2018-12-27
我正在尝试按日期分组并检查 X 中的值是否等于特定日期的 Y 中的值。
我尝试了以下逻辑,但似乎不起作用。
are_equal = df.groupby('date').apply(lambda g: (g.X == g.Y).sum())
df['are_equal'] = df.date.map(are_equal)
所需的输出是一个标志,表明索引 1 和 3 相等。
解决方案
与 一起使用Series.isin
:
f = lambda g: g.X.fillna('no match').isin(g.Y) | g.Y.fillna('no match').isin(g.X)
df['are_equal'] = df.groupby('date', group_keys=False).apply(f)
print (df)
X Y date are_equal
0 10.0 NaN 2018-12-27 False
1 20.0 40.0 2018-12-27 True
2 15.0 NaN 2018-12-24 False
3 NaN 20.0 2018-12-27 True
推荐阅读
- powerbi - Power Bi 嵌入式 A1。问题?
- r - 在 Quantstrat 中使用 add.indicator() 时出错
- javascript - Javascript 对象操作以创建具有变量 id 的对象列表
- angular - 如何在角度 9 中将插值值绑定到 ngModel
- c# - 是否可以在 linq 表达式(在哪里)中使用 Func 字段选择器?
- amazon-web-services - 执行命令时出错:mvn test。原因:退出状态 1 - AWS
- python - 套接字监听随机时间,然后停止监听并继续其他代码
- flutter - 使用 dart:ffi 将本机 C 库绑定到 dart
- android - 在使用 Firebase 身份验证的 Unity 项目中使用 Google Drive API
- java - 从Java中的字符串获取子字符串