取一个带有一列想象的“温度”数据的数据框:
import pandas as pd
import numpy as np
dates = pd.date_range('20070101',periods=3200)
df = pd.DataFrame(data=np.random.randint(0,100,(3200,1)), columns =list('A'))
df['date'] = dates
df = df[['date','A']]
我想为所有行分配的值分别低于-10%和高于90%,分别为-1和1(所有其他值为0)。
这是一个尝试执行此操作的函数:
temp = []
def quantilecalc(x):
for season in df:
if season > df.quantile(.9):
temp.append(1)
if season < df.quantile(.1):
temp.append(-1)
else:
temp.append(0)
应用此方法时quantilecalc(df)
,出现以下错误:
File "C:\\\\lib\site-packages\pandas\core\ops.py", line 682, in na_op
raise TypeError("invalid type comparison")
TypeError: invalid type comparison
我尝试将其应用于数据框的特定列,quantilecalc(df['A'])
但这给出了相同的错误。非常感谢您的专业知识...
@EdChum提供了以下答案:
创建一个新列df['temp'] = ""
并应用此列:
df.loc[df['A'] > df['A'].quantile(0.9), 'temp'] = 1
df.loc[df['A'] < df['A'].quantile(0.1), 'temp'] = -1
谢谢!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句