Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将数据帧拆分为两个数据帧,并对这两个数据帧进行过滤,以便具有相同的维度_Python_Pandas_Dataframe - Fatal编程技术网

Python 将数据帧拆分为两个数据帧,并对这两个数据帧进行过滤,以便具有相同的维度

Python 将数据帧拆分为两个数据帧,并对这两个数据帧进行过滤,以便具有相同的维度,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下问题,并有一个解决它的想法,但它不起作用: 我有一个月内每个交易日的DAX看涨期权和看跌期权数据。经过转换和一些计算后,我得到以下数据帧: . 现在的目标是去掉没有相应对的每一行(看涨期权或看跌期权)。对于pair,我指的是具有相同“行使价格”和“TAU”的看涨期权和看跌期权,其中“TAU”表示到期时间(以年为单位)。图中的红色方框是一对的示例。因此,要么有一个只有对的数据帧,要么有两个带有调用和卖出选项的数据帧,其中行是各自的对 我的想法是创建两个新的数据框,一个只包含看涨期权,另一个

我有以下问题,并有一个解决它的想法,但它不起作用: 我有一个月内每个交易日的DAX看涨期权和看跌期权数据。经过转换和一些计算后,我得到以下数据帧: . 现在的目标是去掉没有相应对的每一行(看涨期权或看跌期权)。对于pair,我指的是具有相同“行使价格”和“TAU”的看涨期权和看跌期权,其中“TAU”表示到期时间(以年为单位)。图中的红色方框是一对的示例。因此,要么有一个只有对的数据帧,要么有两个带有调用和卖出选项的数据帧,其中行是各自的对

我的想法是创建两个新的数据框,一个只包含看涨期权,另一个包含看跌期权,在“TAU”和“EXERCISE_PRICE”之后对其进行排序,并使用pandas isin函数完成操作,以消除没有相应对的看涨期权或看跌期权

DaxOptCall=DaxOpt[DaxOpt.CALL\u PUT\u FLAG=='C']

DaxOptPut=DaxOpt[DaxOpt.CALL\u PUT\u FLAG=='p']

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

如果您有任何帮助或想法,我将不胜感激



看看这是否适合你:

通过调用/卖出选项将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"])
接下来,取索引的交集,它将返回一个多索引对象

mtx = df_call.index.intersection(df_put.index)
然后使用mtx对象从dfs中提取公共元素

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

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

查看这是否适用于您:

通过调用/卖出选项将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"])
接下来,取索引的交集,它将返回一个多索引对象

mtx = df_call.index.intersection(df_put.index)
然后使用mtx对象从dfs中提取公共元素

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

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

感谢您的快速重播。可悲的是,它不起作用,尽管如此,我还是很高兴知道这一点。问题是,“行使价格”和“TAU”列不是唯一的,但它们的组合是唯一的。结果是,Multindex对象比tau具有更多的行使价格,并且最终dfs为空。还有其他方法吗?是产生错误还是没有产生所需的输出?它没有产生所需的输出,因为输出是空的。如果您需要我帮助,请更清楚地了解您得到的确切信息。我们谈论的是哪种产出?mtx是否为空?抱歉,我编辑了我的第一条评论,以为你看到了。因此,使用上面的符号df_call.loc[mtx]和df_put.loc[mtx]是空的。在我看来,这是因为列EXERCISE_PRICE和TAU不是唯一的,这导致mtx的EXERCISE_价格比TAU价格高。感谢您的快速重播。可悲的是,它不起作用,尽管如此,我还是很高兴知道这一点。问题是,“行使价格”和“TAU”列不是唯一的,但它们的组合是唯一的。结果是,Multindex对象比tau具有更多的行使价格,并且最终dfs为空。还有其他方法吗?是产生错误还是没有产生所需的输出?它没有产生所需的输出,因为输出是空的。如果您需要我帮助,请更清楚地了解您得到的确切信息。我们谈论的是哪种产出?mtx是否为空?抱歉,我编辑了我的第一条评论,以为你看到了。因此,使用上面的符号df_call.loc[mtx]和df_put.loc[mtx]是空的。在我看来,这是因为列EXERCISE_PRICE和TAU不是唯一的,这导致mtx的EXERCISE_价格比TAU价格高。