我在这里有一个用例,我想用python pandas实现。所以,我有2个表"配置" &安培; "事务处理&#34 ;.表格如下所示。我还有我想要实现的结果表 -
**Configuration Table :**
Set_id Entry_Type Effective_Date
------ ---------- ---------------
S1 IN 08-2000
S2 IN 09-2002
S3 TO 10-2004
S4 TO 12-2006
**Transaction Table :**
Set_id Entry_Type Accounting_Date
------ ---------- ---------------
S2 IN 09-2004
S4 TO 07-2007
**Result_Table :**
Set_id Entry_Type Effective_Date Accounting_Date
------ ---------- -------------- ---------------
S2 IN 09-2002 09-2004
S4 TO 12-2006 07-2007
步骤1 - 按Set_id,Event_Type&组分组配置表EFFECTIVE_DATE
第2步 - 加入的标准是 -
(Configuration.Set_id = Transaction. Set_id
And
Configuration.Entry_Type = Transaction. Entry_Type
And
Max(Effective_Date) < Accounting_Date)
请帮助我。
答案 0 :(得分:2)
您可以执行merge
,它会自动在公共列上对齐,默认类型为inner
:
In [5]:
df1.merge(df )
Out[5]:
Set_id Entry_Type Accounting_Date Effective_Date
0 S2 IN 09-2004 09-2002
1 S4 TO 07-2007 12-2006
合并后,您可以对最后一部分使用布尔过滤:
In [12]:
merged = df1.merge(df )
merged[merged['Effective_Date'].max() < merged['Accounting_Date']]
Out[12]:
Set_id Entry_Type Accounting_Date Effective_Date
1 S4 TO 2007-07-21 2006-12-21
答案 1 :(得分:0)
您可以使用pd.merge()
配置表
In [117]: ct
Out[117]:
Set_id Entry_Type Effective_Date
0 S1 IN 08-2000
1 S2 IN 09-2002
2 S3 TO 10-2004
3 S4 TO 12-2006
交易表
In [119]: tt
Out[119]:
Set_id Entry_Type Accounting_Date
0 S2 IN 09-2004
1 S4 TO 07-2007
并且,结果使用merge
In [120]: ct.merge(tt)
Out[120]:
Set_id Entry_Type Effective_Date Accounting_Date
0 S2 IN 09-2002 09-2004
1 S4 TO 12-2006 07-2007