Pandas Groupby和Multi-indexing

时间:2018-06-08 09:16:01

标签: python pandas pandas-groupby algorithmic-trading

我的csv文件中有一个数据框' df '(附加链接): https://drive.google.com/open?id=1UiarOKWJo3HcdA1lh5EcR5lrtSjCOtAX

我将以下函数应用于上面的df:`

def createKeys(df):
    df.sort_values(by = ['KEY'], inplace = True)
    df['Whatever'] = df['KEY'].apply(lambda x: x.split("_")[0] + "_" + x.split("_")[1])
    df['STRIKE_PRICE'] = df['KEY'].apply(lambda x: float(x.split("_")[2]))
    df['STRIKE_PR'] = df['STRIKE_PRICE']
    df['OPTION_TYP'] = df['KEY'].apply(lambda x: x.split("_")[3])
    df.set_index(keys = ['Whatever','OPTION_TYP'], inplace= True)
    return df

df= createKeys(df)

我得到以下数据框(图片中没有一些列 - 表的水平长度>图像的剪辑大小): enter image description here

对于“KEY”(索引)中的每个键,我想要“STRIKE_PR”列中的所有执行价格(图像中不存在)并分别对“CE”和“PE”选项类型执行操作(对于所有这些罢工)。

EG。假设我有1260 CE,1260 PE,1280 CE,1280 PE,1300 CE,1300 PE为key ='ACC_JUL-2018' 我想过滤掉CE组的这些罢工[1260,1280,1300]并对这些罢工采取行动。同样适用于PE。你能帮帮我吗? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

这是我要做的。首先,我将为我的1280 1260等创建一个特定列。让我们称之为KEY2

def split(s):
    return(s.split("_")[2])

df["key2"] = df["KEY"].apply(split)

然后,我会分割我的数据帧以分别执行操作。假设你想找到PE的keys2的中位数,你会说

df[(df["option_TYP"]=="PE")]["key2"].median