我有一个大型的、多索引的、多列的dataframe df,我在这里没有展示它。我生成这样一段索引:
subDf = df.sort_index(level=0).loc[:'e']然后,这个切片在索引的第二层中包含NaN:
>>> subDf.iloc[0:1]
change
robustness value
baseline NaN -14.5to_csv()生成的csv似乎是正确的:
>>> subDf.iloc[0:1].to_csv()
Out[15]: 'robustness,value,change\nbaseline,,-14.5\n'类似地,to_html()的功能就像驱逐一样。但是,当我试图获取latex_output时,NaN消失了,出现了一个50.00:
>>> subDf.iloc[0:1].to_latex()
Out[14]: u'\\begin{tabular}{llr}\n\\toprule\n & & change \\\\\nrobustness & value & \\\\\n\\midrule\nbaseline & 50.00 & -14.5 \\\\\n\\bottomrule\n\\end{tabular}\n'50.00不是一个完全任意的数字,它是原始数据帧中多索引的第二层中的最后一个值:
>>> df.index
Out[18]:
MultiIndex(levels=[[u'a', u'b', u'c', u'd', u'e', u'baseline', u'f'], [0.01, 0.04, 0.25, 0.75, 0.86, 0.99, 1.0, 2.0, 4.0, 10.0, 50.0]],
labels=[[5, 6, 6, 2, 2, 1, 3, 3, 3, 4, 4, 0, 0], [-1, 0, 1, 2, 3, 9, 6, 7, 8, 4, 5, 9, 10]],
names=[u'robustness', u'value'])出现了两个问题:
to_latex()打印一个NaN发布于 2018-04-13 21:08:59
这可能为时已晚,但对后人来说,但我认为这两种方法都应该奏效:
NaN的列转换为string;这将在LaTeX中为您提供nan。NaN而不是nan,则可以执行1.然后替换,也可以只执行df.fillna('NaN')。显然,这些方法以不利于进一步分析的方式修改数据格式,但我认为这是一个简单的解决办法;只需先复制一下数据。
(我用一个单一级别的索引在dataframe上测试了这些方法,但我无法想象它在多个级别上会有什么不同的效果。)
https://stackoverflow.com/questions/39569791
复制相似问题