Python:在重复日期之间求平均值

Python:在重复日期之间求平均值,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个带有datetime的numpy数组,存储在大小为100的数组a中,如下所示: >>>A[0] datetime.datetime(2011, 1, 1, 0, 0) 其他99个元素是datetime.datetime对象,但很少有重复的,例如 A[55] datetime.datetime(2011, 11, 2, 0, 0) A[56] datetime.datetime(2011, 11, 2, 0, 0) 我有另一个与A大小相同的Temperature

我有一个带有
datetime
的numpy数组,存储在大小为100的数组
a
中,如下所示:

>>>A[0]
datetime.datetime(2011, 1, 1, 0, 0)
其他99个元素是
datetime.datetime
对象,但很少有重复的,例如

A[55] 
datetime.datetime(2011, 11, 2, 0, 0)

A[56] 
datetime.datetime(2011, 11, 2, 0, 0)
我有另一个与
A
大小相同的
Temperature
s数组,其值对应于
A
行,如下所示:

Temperature[0] = 55
Temperature[55] = 40
Temperature[56] = 50
我试图从
A2
中获取一个新数组,该数组仅具有
a
中唯一的日期时间,并取相应温度重复的平均值

因此,在这种情况下,我将有
A2
,只有1个
datetime.datetime(2011,11,2,0,0)
,温度将
0.5*(40+50)=45

我尝试将pandas数据透视表用作:

DayLightSavCure = pd.pivot_table(pd.DataFrame({'DateByHour': A, 'Temp': Temperature}), index=['DateByHour'], values=['Temp'], aggfunc=[np.mean])
但错误在于:

ValueError: If using all scalar values, you must pass an index

我确实同意“其他人”的观点,这不需要深入研究熊猫就可以实现。这真是太好了。为Python 3.5+编写(因为
统计信息

from itertools import groupby
from operator import itemgetter
from random import randint
import datetime
from statistics import mean

# Generate test data
dates = [datetime.datetime(2005, i % 12 + 1, 5, 5, 5, 5) for i in range(100)]
temperatures = [randint(0, 100) for _ in range(100)]

# Calculate averages

## Group data points by unique dates using `groupby`, `sorted` and `zip`
grouped = groupby(sorted(zip(dates, temperatures)), key=itemgetter(0))

##Calculate mean per unique date
averaged = [(key, mean(temperature[1] for temperature in values)) for key, values in grouped]

print(averaged)  # List of tuples
#[(datetime.datetime(2005, 1, 5, 5, 5, 5), 65.22222222222223), (datetime.datetime(2005, 2, 5, 5, 5, 5), 60.0),.......
print(dict(averaged))  # Nicer as a dict
{datetime.datetime(2005, 3, 5, 5, 5, 5): 48.111111111111114, datetime.datetime(2005, 12, 5, 5, 5, 5): 43.75, ..........
如果在计算结束时必须有两个单独的列表/迭代器,只需将
zip
应用于
averaged