首页 > 解决方案 > 如果 A 列具有相同的日期但不同的时间,则在 B 列中取平均值

问题描述

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

例如-

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

PSdtypeA 是datetime64[ns],我有超过 3k 行具有不同的日期时间和值

任何人都可以帮忙吗?

标签: pythonpandas

解决方案


编辑正如您所说,您的数据框是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

推荐阅读