跨两个不同的数据帧计算数据

2024-06-28 20:05:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我要解决这个案例研究:

我有两个不同的数据帧,我想填写“抵达”列(医院数据)在DF1计数所有的帕特抵达DF2根据日期时间在DF1(在excel中是一个计数如果函数)。例如,在DF1中,我的datetime=2013-01-01,我开始计算DF2中到达的所有患者(到达列)=2,并将结果存储在“到达”(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

Tags: 数据函数患者datetime时间excel案例计数
3条回答

您可以首先在DF2上执行groupby,计算其中一列,然后将结果数据帧与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)

我试着应用你的答案,但并没有得到很好的结果,正如你在下面看到的:我只是得到了相同的值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

我想你在找groupby。这样的办法应该行得通。你得照顾好伯爵的南斯。你知道吗

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')

相关问题 更多 >