如何.get_else与熊猫系列?

时间:2018-06-08 16:58:59

标签: python pandas

Pandas pd.Series.get方法有一个默认参数(很像dict.get),它表明我应该能够使用它在其索引中查找一个项目并返回行的值,但在查询时返回默认值不在索引中。

确实有效(并且相当于.loc,默认= NAN):

# x10

maptable = pd.Series(      [100, 110, 120, 130],
                     index=[10,  11,  12,  13]).sort_index()

query_vals = pd.Series([11,12,15], index=['A', 'B', 'C'])

# Passing list-likes to .loc or [] with any missing label will raise KeyError in the future, you can use .reindex() as an alternative.
print maptable.get(query_vals, float("nan"))
11    110.0
12    120.0
15      NaN

# Passing list-likes to .loc or [] with any missing label will raise KeyError in the future, you can use .reindex() as an alternative.
print maptable.loc[query_vals]

...但是抱怨“将列表 - 喜欢.loc或[]与任何缺少的标签一起传递将会引发KeyError,你可以使用.reindex()作为替代。”

.get(over .loc)的目的不是允许使用缺少的索引进行查找。

我应该在这做什么来避免这种警告?我不确定.reindex是如何帮助的。

1 个答案:

答案 0 :(得分:2)

reindex可以传递类似数组index的标签。 如果标签位于索引中,则返回该值。如果不是,则(默认情况下)返回NaN

In [17]: maptable.reindex(query_vals)
Out[17]: 
11    110.0
12    120.0
15      NaN
dtype: float64

In [18]: maptable.reindex(query_vals, fill_value='foo')
Out[18]: 
11    110
12    120
15    foo
dtype: object

未来警告:

  

FutureWarning:   将列表喜欢传递给.loc或[]以及任何缺少的标签将会引发   将来的KeyError,您可以使用.reindex()作为替代。

     

请参阅此处的文档:   https://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate-loc-reindex-listlike

建议您使用.reindex代替.get.loc