首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当to_latex时,熊猫用任意数字替换NAN

当to_latex时,熊猫用任意数字替换NAN
EN

Stack Overflow用户
提问于 2016-09-19 09:32:23
回答 1查看 520关注 0票数 8

我有一个大型的、多索引的、多列的dataframe df,我在这里没有展示它。我生成这样一段索引:

代码语言:javascript
复制
subDf = df.sort_index(level=0).loc[:'e']

然后,这个切片在索引的第二层中包含NaN

代码语言:javascript
复制
>>> subDf.iloc[0:1]
                  change
robustness value        
baseline   NaN     -14.5

to_csv()生成的csv似乎是正确的:

代码语言:javascript
复制
>>> subDf.iloc[0:1].to_csv()
Out[15]: 'robustness,value,change\nbaseline,,-14.5\n'

类似地,to_html()的功能就像驱逐一样。但是,当我试图获取latex_output时,NaN消失了,出现了一个50.00

代码语言:javascript
复制
>>> 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不是一个完全任意的数字,它是原始数据帧中多索引的第二层中的最后一个值:

代码语言:javascript
复制
>>> 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
EN

回答 1

Stack Overflow用户

发布于 2018-04-13 21:08:59

这可能为时已晚,但对后人来说,但我认为这两种方法都应该奏效:

  1. 将带有NaN的列转换为string;这将在LaTeX中为您提供nan
  2. 如果您宁愿使用NaN而不是nan,则可以执行1.然后替换,也可以只执行df.fillna('NaN')

显然,这些方法以不利于进一步分析的方式修改数据格式,但我认为这是一个简单的解决办法;只需先复制一下数据。

(我用一个单一级别的索引在dataframe上测试了这些方法,但我无法想象它在多个级别上会有什么不同的效果。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39569791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档