如果A列的日期相同但时间不同,则获取B列的平均值

时间:2019-01-07 01:05:00

标签: python pandas

所以,我有一个熊猫数据框,其中有一列包含数据和时间,另一列包含浮点值。现在,我想取第二列中的值的平均值,如果日期与时间无关,则相同,并且只想显示该日期的一个值。 有人可以帮忙吗?

例如-

**1st row**- Column A - '2018-12-08 04:51:58', Column B- '3', Column C- '4'
**2nd row**- Column A - '2018-12-08 04:51:49', Column B- '2', Column C- '3'
**3rd row**- Column A - '2018-12-08 04:51:57', Column B- '1', Column C- '2'

我想要的输出是:

Column A- '2018-12-08', Column B- '2', Column C- '3'

PS A列的dtypedatetime64[ns],我有超过3k的行具有不同的日期时间和值

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

编辑正如您所说的数据框为datetime64[ns],类似:

    date                C
0   2018-09-14 00:00:00 4
1   2018-09-14 00:10:00 3
2   2018-09-14 01:10:00 2` 

使用:

df.groupby(df['date'].dt.date).mean().reset_index()

或:

df.groupby(df['date'].dt.floor('d')).mean().reset_index()

输出

    date        C
0   2018-09-14  3

用于求和并除以2:

df.groupby(df['date'].dt.date).apply(lambda x : x['C'].sum()/2).reset_index().rename(columns={0:'new'})

或(我刚刚发现的另一种方法)

df.groupby(df['date'].dt.floor('d')).apply(lambda x : x['C'].sum()/2).reset_index().rename(columns={0:'new'})

输出

    date        new
0   2018-09-14  4.5