python - 计算 pandas 数据帧的百分位并将二进制值分配给新列

标签 python pandas dataframe

获取一个包含一列想象的“温度”数据的数据框:

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

谢谢!

关于python - 计算 pandas 数据帧的百分位并将二进制值分配给新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37751146/

相关文章:

python - 如何创建具有特定服务帐户设置的 Google Compute Engine 实例?

python - 忽略覆盖率报告中的空文件

python - 如何存储 TfidfVectorizer 以备将来在 scikit-learn 中使用?

python - 将数据框对角线对齐到列中?

python - 给定列列表的 pandas 数据框的求和值

python - 如何从Python的行列表中选择特定元素

r - 将函数应用于 R 中的不同 data.frames

python - 从python多进程返回变量

python - 如何在 Pandas 数据框中将单元格设置为 NaN

python - 如何使用自定义顺序按两列对 DataFrame 进行排序?