• Pandas一个需求:存在一个列表,需要在一个DataFrame中取到以该列表为索引的数据


     需求:Pandas一个需求:存在一个列表,需要在一个DataFrame中取到以该列表为索引的数据

    这里有一个坑,

    In [103]: s = pd.Series([1, 2, 3])
    
    In [104]: s
    Out[104]: 
    0    1
    1    2
    2    3
    dtype: int64

    当loc[]中的列表包含于S的索引中的话,没有问题

    In [105]: s.loc[[1, 2]]
    Out[105]: 
    1    2
    2    3
    dtype: int64


    In [4]: s.loc[[1, 2, 3]]

    Passing list-likes to .loc with any non-matching elements will raise
    KeyError in the future, you can use .reindex() as an alternative.
    
    See the documentation here:
    https://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate-loc-reindex-listlike
    

     由于 3不在s的索引中,所以引发了一个错误。

    解决办法:

    将s先用reindex() 接收需索引的列表, 这样就会将s索引中没有的值,填充为Nan

    In [106]: s.reindex([1, 2, 3])
    Out[106]: 
    1    2.0
    2    3.0
    3    NaN
    dtype: float64

    另外:如果你只想取到给定list和DataFrame索引中交集的值,那么就可以用一下方式:
    In [107]: labels = [1, 2, 3]
    
    In [108]: s.loc[s.index.intersection(labels)]
    Out[108]: 
    1    2
    2    3
    dtype: int64


    同时需要注意:
     
     
    你的时间用在哪里决定你成为一个什么样的人。
  • 相关阅读:
    程序书写规范
    点灯主要顺序
    复用功能重映射
    STM32 (战舰)
    html5 javascript 新增加的高级选择器更精准更实用
    html5 javascript 事件练习3键盘控制练习
    html5 javascript 事件练习3随机键盘
    html5 javascript 事件练习2
    html5 javascript 事件练习1
    html5dom2
  • 原文地址:https://www.cnblogs.com/yc3110/p/14802890.html
Copyright © 2020-2023  润新知