【问题标题】:Counting data across two different dataframes计算两个不同数据帧中的数据
【发布时间】:2015-09-05 14:15:55
【问题描述】:

我有这个案例研究要解决:

我有 2 个不同的数据框,我想在 DF1 中填写“到达”列(医院数据),根据 DF1 中的日期时间计算到达 DF2 的所有 pat(在 excel 中是一个计数 if 函数)。例如,在 DF1 中,我有 datetime = 2013-01-01,我会计算所有到达 DF2(到达列)=2 的患者,并将结果存储在“ARRIVALS”(DF1)中。

DF1

    patient datetime    arrivals    departures  occupancy   dayofweek
0   pat 2013-01-01  0   0   0   1
1   pat 2013-01-02  0   0   0   2
2   pat 2013-01-03  0   0   0   3
3   pat 2013-01-04  0   0   0   4
4   pat 2013-01-05  0   0   0   5

DF2


category    Arrival     departures  occupancy   dayofweek
0   pat 2013-01-01  2013-01-02  0   
1   pat 2013-01-01  2013-01-02  2
2   pat 2013-01-03  2013-01-15  3
3   pat 2013-01-04  2013-01-20  4
4   pat 2013-01-05  2013-01-20  5

【问题讨论】:

    标签: python python-3.x pandas ipython


    【解决方案1】:

    您可以先在 DF2 上进行 groupby,计算其中一列,然后将生成的 DataFrame 与 DF1 合并,如下所示:

    df2_gr = df2.groupby('Arrival')['category'].count().reset_index()
    
    df3 = df1.merge(df2_gr, left_on='datetime', right_on='Arrival', how='left').fillna(0)
    

    【讨论】:

    • 我按照你说的试过了,但没有得到好的结果(我把结果贴在下面)
    【解决方案2】:

    我认为您正在寻找 groupby。像这样的东西应该工作。你需要照顾伯爵的 nans。

    import pandas as pd
    
    d1 = pd.DataFrame([['A', 'B', 'C', 'D', 'E', 'F'], ['blah', 'blah', 'blah', 'blah', 'blah', 'blah']]).T
    d2 = pd.DataFrame([['A', 'A', 'C', 'D', 'A', 'D'], ['blah', 'blah', 'blah', 'blah', 'blah', 'blah']]).T
    
    unique_counts = d2.groupby(0).count()
    
    pd.merge(d1, unique_counts, left_on=0, right_index=True, how='outer')
    

    【讨论】:

      【解决方案3】:

      我已尝试应用您的答案,但没有得到好的结果,如下所示:我只有相同的值 1970 -01-01,而不是在 datetime 列中存储具有相同值的列。到达列是空的,而不是根据需要(来自 df1)的到达计数

      df3 = pandas.merge(df1,df2_gr, left_on='datetime', right_on ='Datain',how='left').fillna(0)
      df3
      
         category datetime    arrivals    departures  occupancy   dayofweek   Arrival category
      0   pat 2013-01-01  0   0   0   1   1970-01-01  0
      1   pat 2013-01-02  0   0   0   2   1970-01-01  0
      2   pat 2013-01-03  0   0   0   3   1970-01-01  0
      3   pat 2013-01-04  0   0   0   4   1970-01-01  0
      4   pat 2013-01-05  0   0   0   5   1970-01-01  0
      5   pat 2013-01-06  0   0   0   6   1970-01-01  0
      6   pat 2013-01-07  0   0   0   0   1970-01-01  0
      7   pat 2013-01-08  0   0   0   1   1970-01-01  0
      8   pat 2013-01-09  0   0   0   2   1970-01-01  0
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-29
        • 2017-05-28
        • 1970-01-01
        • 2022-01-06
        • 2017-05-29
        相关资源
        最近更新 更多