gpt4 book ai didi

python - 将 DataFrame 拆分为两个 DataFrame 并过滤这两个 DataFrame 以获得相同的维度

转载 作者:太空宇宙 更新时间:2023-11-03 20:02:51 29 4
gpt4 key购买 nike

我遇到了以下问题,并有一个想法来解决它,但没有成功:我有一个月内每个交易日的 DAX 看涨期权和看跌期权数据。经过转换和一些计算后,我有以下 DataFrame: DaxOpt 。现在的目标是消除没有相应货币对的每一行(看涨期权或看跌期权)。对于配对,我指的是具有相同“EXERCISE_PRICE”和“TAU”的看涨期权和看跌期权,其中“TAU”= 到期时间(以年为单位)。图中的红框是一对的例子。因此,要么有一个仅包含对的 DataFrame,要么有两个带有 Call 和 Put 选项的 DataFrame,其中行是各自的对。

我的想法是创建两个新的 DataFrame,一个仅包含看涨期权,另一个包含看跌期权,将它们在“TAU”和“EXERCISE_PRICE”之后进行排序,并使用 pandas isin 函数进行处理,以便摆脱没有相应货币对的看涨期权或看跌期权。

DaxOptCall = DaxOpt[DaxOpt.CALL_PUT_FLAG == 'C']

DaxOptPut = DaxOpt[DaxOpt.CALL_PUT_FLAG == 'P']

问题是 DaxOptCall 和 DaxOptPut 的维度不同,因此 isin 函数不适用。我正在尝试找到最有效的方法,因为我现在使用的数据只是真实数据的一小部分。

非常感谢任何帮助或想法。

<小时/>

最佳答案

看看这是否适合您:

通过 CALL/PUT 选项将 df 分成两个 df 后,将您的对特有的列转换为索引列:

# Assuming your unique columns are TAU and EXERCISE_PRICE
df_call = df_call.set_index(["EXERCISE_PRICE", "TAU"])
df_put = df_put.set_index(["EXERCISE_PRICE", "TAU"])

接下来,取索引的交集,这将返回 pandas MultiIndex 对象

mtx = df_call.index.intersection(df_put.index)

然后使用mtx对象从dfs中提取公共(public)元素

df_call.loc[mtx]
df_put.loc[mtx]

如果您希望它们位于同一 df 中,则可以将它们合并并将索引重置为原始列。

关于python - 将 DataFrame 拆分为两个 DataFrame 并过滤这两个 DataFrame 以获得相同的维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59127233/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com