【发布时间】:2020-12-28 01:19:54
【问题描述】:
我对 Python 业务非常陌生,因此我向社区寻求一些额外的支持。我有一个 Pandas DataFrame,其中有 .index 和 .column,格式为 IntervalIndex。从下面的输出可以看出,元组(?)的第一个.left元素和最后一个.right元素是inf:
IntervalIndex([[-inf, -1.0), [-1.0, -0.9), [-0.9, -0.8), [-0.8, -0.7), [-0.7, -0.6) ... [0.6000000000000001, 0.7000000000000002), [0.7000000000000002, 0.8), [0.8, 0.9000000000000001), [0.9000000000000001, 1.0), [1.0, inf)],
closed='left',
name='cos(theta)',
dtype='interval[float64]')
我正在尝试使用 plt.pcolormesh(x,y,C) 绘制 2D 历史记录,它抱怨是因为:
ValueError: x and y arguments to pcolormesh cannot have non-finite values or be of type numpy.ma.core.MaskedArray with masked values
我需要pcolormesh,因为我的数据由一个 C 值矩阵(计数)、一个 x 索引(cos(theta))和一个 y 列(能量)组成。 C 的尺寸应该与 x 和 y 的长度匹配,因此我不能简单地用 pivot_pipanda.index.left[1:] for -inf 之类的东西切割边缘。
我想将-inf 替换为其元组的.right 值(即[-inf, -1.0))- 之后的bin 的中心值(所有bin 具有相同的宽度)和@987654334 的镜面反射@。我曾想过像 .apply() 或 .raplace() 这样的幼稚方法,但它们不适用于 .index.left 或 .index.right 。我可以使用语法pivot_df.index.left.isin(["-inf"])
array([ True, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, False, False, False])
但我无法想象有一个功能可以完成这项工作。
非常欢迎任何想法!
【问题讨论】:
-
一种可能的解决方法是将直方图转换为 my"Dhisto.numpy() 。然而,转换不包括 -inf 和 +inf 以 .index 和 .column 1 项的长度结束小于 z 的 .shape 数。
标签: pandas dataframe matplotlib indexing nan