Python 计算熊猫系列的质心

Python 计算熊猫系列的质心,python,pandas,datetime,indexing,mean,Python,Pandas,Datetime,Indexing,Mean,我有一个带有日期时间索引(如降水量)的熊猫系列。我想计算这个降水时间序列的质心(该值加权的日期时间的平均值)。我的问题是我不能将datetime对象与浮点相乘。(不起作用)的想法如下(输出应该是datetime对象): 在计算产品之前,尝试将datetime转换为历元时间戳(并将最终结果转换回datetime)。我希望这有帮助 import pandas as pd import datetime as dt df = pd.DataFrame({'P':[1.2,10.1,5.6,0,0,0,

我有一个带有日期时间索引(如降水量)的熊猫系列。我想计算这个降水时间序列的质心(该值加权的日期时间的平均值)。我的问题是我不能将datetime对象与浮点相乘。(不起作用)的想法如下(输出应该是datetime对象):


在计算产品之前,尝试将datetime转换为历元时间戳(并将最终结果转换回datetime)。我希望这有帮助

import pandas as pd
import datetime as dt
df = pd.DataFrame({'P':[1.2,10.1,5.6,0,0,0,0,0,3,4,6,4,8,2,0,0,0,0,0,0,0,0,0,0]}, index=[dt.datetime(2012,1,1,h) for h in range(24)])
P_sum = df['P'].sum()
df["epoch"] = [float(t.strftime('%s')) for t in df.index]
prod = df["epoch"] * df['P'] / P_sum
mean_date = prod.mean()
print dt.datetime.fromtimestamp(mean_date).strftime('%Y-%m-%d %H:%M:%S')
更新:这可能就是您正在寻找的:

import pandas as pd
import datetime as dt
df = pd.DataFrame({'P':[1.2,10.1,5.6,0,0,0,0,0,3,4,6,4,8,2,0,0,0,0,0,0,0,0,0,0]}, index=[dt.datetime(2012,1,1,h) for h in range(24)])
df["epoch"] = [float(t.strftime('%s')) for t in df.index]
mean_date = (df["epoch"] * df['P']).sum() / df['P'].sum()
print dt.datetime.fromtimestamp(mean_date).strftime('%Y-%m-%d %H:%M:%S')
输出:

2012-01-01 07:00:00
更新2:日期时间转换更好的代码(输出相同):


什么是
P_tot
?那它是从哪里来的?对不起,是普苏姆。修正了它根据质心,你可能想重新考虑如何计算它。我认为这不会产生你想要的结果。谢谢!我得到
ValueError:df[“epoch”]=[float(t.strftime('%s'))的
df.index中t的格式字符串无效
2012-01-01 07:00:00
import pandas as pd
import datetime as dt
df = pd.DataFrame({'P':[1.2,10.1,5.6,0,0,0,0,0,3,4,6,4,8,2,0,0,0,0,0,0,0,0,0,0]}, index=[dt.datetime(2012,1,1,h) for h in range(24)]
df["epoch"] = df.index.astype('int64')//1e9
mean_date = (df["epoch"] * df['P']).sum() / df['P'].sum()
print dt.datetime.fromtimestamp(mean_date).strftime('%Y-%m-%d %H:%M:%S')