我是py的初学者。我的问题是,我没有将时间序列中的元素与其在分位数度量上各自的组进行比较。 这是数据框:
import numpy as np
import pandas as pd
#np.random.seed(444)
df = pd.DataFrame({
'A' : ['foo', 'bar', 'foo', 'bar','foo', 'bar', 'foo', 'foo','foo','bar'],
'B' : ['one', 'one', 'two', 'two','two', 'two', 'one', 'two','one','two'],
'2018-09-28' : np.random.randn(10),
'2018-10-06' : np.random.randn(10),
'2018-10-13' : np.random.randn(10)
})
df.index = ['se0','se1','se2','se3','se4','se5','se6','se7',"se8",'se9']
df.index.name = 'SE'
然后在计算下限和上限的地方创建2个df
#根据A组和B组计算低分位数和高分位数,并放入
它在索引级别(se0,…)
df_low = df.groupby(['A','B']).transform(lambda x : x.quantile(0.45))
df_high = df.groupby(['A','B']).transform(lambda x : x.quantile(0.55))
print(df_low)
print(df_high)
#根据评估se0,…,se9相对于组分位数的值的测试,在有标志(1或-1)的地方创建一个新的df
f=lambda x : -1 if x<df_low else 1 if x>df_high else 0
transformed=df.iloc[:,2:].apply(f)
我犯了个错误。我错在哪里?你知道吗
使用
x<df_low
返回布尔值的数据帧,其中原始df中大于x的值为True这就是为什么会出现错误,因为if语句期望的是True或False,而不是dataframe。你知道吗
这将为您提供所需的数据帧:
相关问题 更多 >
编程相关推荐