pandas导出字符串系列没有字符串截断

时间:2017-05-13 07:31:01

标签: pandas

我有简单的代码,它合并两个字符串系列并将结果写入文件

pd.set_option('display.max_colwidth', -1)

def merge(row):
  return row['labels'] + ' ' + row['text']

fasttext_formatted = label_converted.applymap(str).apply(merge, axis=1)

with open("fasttext_tagged_input", "w") as outfile:
    fasttext_formatted.to_string(outfile, index=False)

如果省略pd.set_option('display.max_colwidth', -1),则在写入文件时会截断字符串。我假设有一种比使用这样的(全局)显示选项更好的方法 - 你能建议吗?

(在Jupyter笔记本中运行)

1 个答案:

答案 0 :(得分:1)

我认为你可以使用option_context

  

option_context 上下文管理器已通过顶级API公开,允许您使用给定的选项值执行代码。退出 with 块时会自动恢复选项值:

def merge(row):
  return row['labels'] + ' ' + row['text']

with pd.option_context('display.max_colwidth', -1):
    fasttext_formatted = label_converted.applymap(str).apply(merge, axis=1)

    with open("fasttext_tagged_input", "w") as outfile:
        fasttext_formatted.to_string(outfile, index=False)

也许可以改进它 - 使用DataFrame.astype + Series.to_csv并省略apply

with pd.option_context('display.max_colwidth', -1):
    #convert all columns to string
    fasttext_formatted = label_converted.astype(str) 
    #concentrate columns to Series new
    new = fasttext_formatted['labels'] + ' ' + fasttext_formatted['text']
    #write Series to csv 
    new.to_csv(fasttext_tagged_input, index=False)