基于唯一的多列索引的另一个DataFrame的新pandas DataFrame

维尔卡多

我正在尝试基于唯一的多列索引从另一个pandas.DataFrame创建一个新的pandas.DataFrame。我可以使用带有正确结果的df.index.drop_duplicates()创建pandas.core.index.MultiIndex,但是我不知道如何将其转换为pandas.DataFrame。

以下脚本使用SQL查询创建原始DataFrame。

import sqlite3 as db
import pandas as pd

conn = db.connect('C:/data.db')
query = """SELECT TimeStamp, UnderlyingSymbol, Expiry, Strike, CP, BisectIV, OTMperc FROM ActiveOptions
           WHERE TimeStamp = '2015-11-09 16:00:00' AND UnderlyingSymbol = 'INTC' AND
           Expiry < '2015-11-27 16:00:00' AND OTMperc < .02  AND OTMperc > -.02
           ORDER BY UnderlyingSymbol, Expiry, ABS(OTMperc)"""

df = pd.read_sql_query(sql=query, con=conn,index_col=['TimeStamp', 'UnderlyingSymbol', 'Expiry'],
                       parse_dates=['TimeStamp', 'Expiry'])

该脚本创建以下DataFrame:

In[6]: df
Out[6]: 
                                                          Strike  CP  BisectIV  OTMperc
TimeStamp           UnderlyingSymbol Expiry                                            
2015-11-09 16:00:00 INTC             2015-11-13 16:00:00    33.5  -1    0.2302  -0.0045
                                     2015-11-13 16:00:00    33.5   1    0.2257   0.0045
                                     2015-11-13 16:00:00    33.0  -1    0.2442   0.0105
                                     2015-11-13 16:00:00    33.0   1    0.2426  -0.0106
                                     2015-11-13 16:00:00    34.0   1    0.2240   0.0191
                                     2015-11-13 16:00:00    34.0  -1    0.2295  -0.0195

                                     2015-11-20 16:00:00    33.5   1    0.2817   0.0045
                                     2015-11-20 16:00:00    33.5  -1    0.2840  -0.0045
                                     2015-11-20 16:00:00    33.0  -1    0.2935   0.0105
                                     2015-11-20 16:00:00    33.0   1    0.2914  -0.0106
                                     2015-11-20 16:00:00    34.0   1    0.2718   0.0191
                                     2015-11-20 16:00:00    34.0  -1    0.2784  -0.0195

使用唯一的多列索引创建一个新的DataFrame会产生以下输出:

In[10]: new_df = df.index.drop_duplicates()
In[11]: new_df
Out[11]: 
MultiIndex(levels=[[2015-11-09 16:00:00], [u'INTC'], [2015-11-13 16:00:00, 2015-11-20 16:00:00]],
           labels=[[0, 0], [0, 0], [0, 1]],
           names=[u'TimeStamp', u'UnderlyingSymbol', u'Expiry'])

In[12]: type(new_df)
Out[12]: pandas.core.index.MultiIndex

有任何想法吗?

恋爱

问题是您将new_df索引集设置为删除重复项:

new_df = df.index.drop_duplicates()

您只需要选择没有重复索引的行。您可以使用该duplicated函数来过滤旧数据框:

new_df = df[~df.index.duplicated()]

一个小例子,基于

#create data sample with multi index
arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
          ['one', 'one', 'one', 'two', 'one', 'two', 'one', 'one']]
#(the first and last are duplicates)
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
s = pd.Series(np.random.randn(8), index=index)

原始数据:

>>> s
first  second
bar    one      -0.932521
       one       1.969771
baz    one       1.574908
       two       0.125159
foo    one      -0.075174
       two       0.777039
qux    one      -0.992862
       one      -1.099260
dtype: float64

并过滤掉重复项:

>>> s[~s.index.duplicated()]
first  second
bar    one      -0.932521
baz    one       1.574908
       two       0.125159
foo    one      -0.075174
       two       0.777039
qux    one      -0.992862
dtype: float64

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何基于另一个 DataFrame 中的列在 Pandas DataFrame 中创建新列?

来自分类Dev

用另一个DataFrame替换Pandas多索引DataFrame的列

来自分类Dev

DataFrame中的新列基于另一个DataFrame中的行和列

来自分类Dev

如何基于Pandas中的另一个DataFrame更改DataFrame的某些列中的值

来自分类Dev

基于 Pandas 中的另一个 DataFrame 修改 DataFrame

来自分类Dev

如何在Pandas DataFrame的wrt索引和另一个DataFrame的列中映射数据

来自分类Dev

通过来自另一个DataFrame的行将新列映射到DataFrame

来自分类Dev

当我期望系列时,Pandas DataFrame列会显示另一个DataFrame

来自分类Dev

当我期望系列时,Pandas DataFrame列会显示另一个DataFrame

来自分类Dev

通过匹配另一个DataFrame中的值来最佳填充Pandas DataFrame列

来自分类Dev

将 Pandas DataFrame 列与另一个 DataFrame 的范围相加

来自分类Dev

使用现有TimeSerie中的索引和另一个TimeSerie中的列在Pandas中创建DataFrame

来自分类Dev

python&pandas-删除行,其中列值是另一个DataFrame中的索引值

来自分类Dev

Python Pandas根据另一个列中的总数从另一个dataFrame中选择值

来自分类Dev

基于另一个DataFrame列值的条件求和

来自分类Dev

如何为基于另一个 DataFrame 的字符串创建标签列?

来自分类Dev

将pandas.DataFrame追加到另一个pandas.DataFrame的一列

来自分类Dev

计算一个 DataFrame 元素与 DataFrame 列中另一个元素的差异

来自分类Dev

如何创建一个新的dataframe列,并从另一个列中移出值?

来自分类Dev

如何基于另一个DataFrame中的值更新DataFrame中的值?

来自分类Dev

如何在基于另一个DataFrame的列上删除DataFrame中的行?

来自分类Dev

如何在基于另一个DataFrame的列上删除DataFrame中的行?

来自分类Dev

如何通过另一个Dataframe列过滤Pandas行?

来自分类Dev

通过另一个DataFrame过滤Series / DataFrame

来自分类Dev

使用Pandas将列从一个DataFrame复制到另一个的最快方法?

来自分类Dev

使用Pandas将列从一个DataFrame复制到另一个的最快方法?

来自分类Dev

使用另一个列值的len()添加一个DataFrame列

来自分类Dev

pandas 从另一个 DataFrame 获取值和位置并制作一个系列

来自分类Dev

仅选择多索引DataFrame的一个索引

Related 相关文章

  1. 1

    如何基于另一个 DataFrame 中的列在 Pandas DataFrame 中创建新列?

  2. 2

    用另一个DataFrame替换Pandas多索引DataFrame的列

  3. 3

    DataFrame中的新列基于另一个DataFrame中的行和列

  4. 4

    如何基于Pandas中的另一个DataFrame更改DataFrame的某些列中的值

  5. 5

    基于 Pandas 中的另一个 DataFrame 修改 DataFrame

  6. 6

    如何在Pandas DataFrame的wrt索引和另一个DataFrame的列中映射数据

  7. 7

    通过来自另一个DataFrame的行将新列映射到DataFrame

  8. 8

    当我期望系列时,Pandas DataFrame列会显示另一个DataFrame

  9. 9

    当我期望系列时,Pandas DataFrame列会显示另一个DataFrame

  10. 10

    通过匹配另一个DataFrame中的值来最佳填充Pandas DataFrame列

  11. 11

    将 Pandas DataFrame 列与另一个 DataFrame 的范围相加

  12. 12

    使用现有TimeSerie中的索引和另一个TimeSerie中的列在Pandas中创建DataFrame

  13. 13

    python&pandas-删除行,其中列值是另一个DataFrame中的索引值

  14. 14

    Python Pandas根据另一个列中的总数从另一个dataFrame中选择值

  15. 15

    基于另一个DataFrame列值的条件求和

  16. 16

    如何为基于另一个 DataFrame 的字符串创建标签列?

  17. 17

    将pandas.DataFrame追加到另一个pandas.DataFrame的一列

  18. 18

    计算一个 DataFrame 元素与 DataFrame 列中另一个元素的差异

  19. 19

    如何创建一个新的dataframe列,并从另一个列中移出值?

  20. 20

    如何基于另一个DataFrame中的值更新DataFrame中的值?

  21. 21

    如何在基于另一个DataFrame的列上删除DataFrame中的行?

  22. 22

    如何在基于另一个DataFrame的列上删除DataFrame中的行?

  23. 23

    如何通过另一个Dataframe列过滤Pandas行?

  24. 24

    通过另一个DataFrame过滤Series / DataFrame

  25. 25

    使用Pandas将列从一个DataFrame复制到另一个的最快方法?

  26. 26

    使用Pandas将列从一个DataFrame复制到另一个的最快方法?

  27. 27

    使用另一个列值的len()添加一个DataFrame列

  28. 28

    pandas 从另一个 DataFrame 获取值和位置并制作一个系列

  29. 29

    仅选择多索引DataFrame的一个索引

热门标签

归档