加入&创建存储桶 - Python Pandas

时间:2015-04-21 20:10:52

标签: python pandas

我在这里有一个用例,我想用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) 

请帮助我。

2 个答案:

答案 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