繁体   English   中英

如何通过基于 2 个其他数据帧的条件比较列来创建 2 个新数据帧?

[英]How to create 2 new dataframes by comparing columns based on a condition for 2 other dataframes?

所以我有这样的表A:

    State   Date
0   NY      8/4/18
1   NY      4/3/18
2   GA      2/1/18
3   GA      10/11/18

和表 B 一样:

    State   Date
0   NY      5/2/18
1   GA      3/4/18

我想将表 B 中的日期值与表 A 进行比较; 如果表 A 中的日期 <= 对应 State 的表 B 中的日期,则将该行放在 Dataframe 1 中。否则,它进入 Dataframe 2。结果集:

结果集 A:

    State   Date    
0   NY      4/3/18
1   GA      2/1/18

结果集 B:

    State   Date
2   NY      8/4/18
3   GA      10/11/18

比较列非常简单,我可以使用 numpy,但我不确定如何将 true 和 false 划分为 2 个不同的数据集的方法。

您可以mergeAB ,然后使用<=来比较Date like 列,以创建一个 boolean 掩码,表示表 A 中的日期 <= 表 B 中相应 State 的日期的条件,最后使用此掩码过滤行:

d = A.merge(B, on='State', how='left')
m = pd.to_datetime(d['Date_x']) <= pd.to_datetime(d['Date_y'])

df1, df2 = A[m].copy(), A[~m].copy()

结果:

print(df1)
  State    Date
1    NY  4/3/18
2    GA  2/1/18

print(df2)
  State      Date
0    NY    8/4/18
3    GA  10/11/18

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM