我有一个反复出现的问题,我有一些列是角度,而其他不是数据帧,我想重新采样这样的方式,平均值计算正确的每种类型。下面是一个小例子:
import pandas as pd
import numpy as np
def angleMean(x):
d2r = np.pi/180.
cosMean = np.mean(np.cos(x * d2r))
sinMean = np.mean(np.sin(x * d2r))
return np.arctan2(sinMean,cosMean) / d2r
# Define data fame
t = pd.date_range("00:00", "3:00", freq="30min")
df = pd.DataFrame({'t':t,'x':[350.,0.,2.,4.,6.,8.,10.],'theta':[350.,0.,2.,4.,6.,8.,10.]}).set_index('t')
# Using normal mean
print df.resample('1H').mean()
# Using angular mean
print df.resample('1H').apply(angleMean)
上面的示例显示了应用于所有列的任意一种类型的平均值以获得重采样
有没有一种好方法可以定义一个函数,它使用列名来确定要应用于每个列的正确平均值
通过调用
apply
,可以将DataFrame的每一列作为Series对象传递给指定的函数。您可以通过.name
属性获得序列的名称(即列名):相关问题 更多 >
编程相关推荐