首页 > 解决方案 > 将 Panda Column 转换为由换行符分隔的文本文件

问题描述

我想创建一个 txt 文件,其中每一行都是所谓的“股票代码”(=股票的符号)。作为第一步,我通过 wikipedia api 下载了我想要的所有代码:

import pandas as pd
import wikipedia as wp

html1 = wp.page("List of S&P 500 companies").html().encode("UTF-8")
df = pd.read_html(html1,header =0)[0]

df = df.drop(['SEC filings','CIK', 'Headquarters Location', 'Date first added', 'Founded'], axis = 1)
df.columns = df.columns.str.replace('Symbol', 'Ticker')

其次,我想创建一个上面提到的 txt 文件,其中包含来自 df 的“Ticker”列的所有代码名称。为此,我可能必须做类似的事情:

f = open("tickertest.txt","w+")
f.write("MMM\nABT\n...etc.")              
f.close() 

现在我的问题:有谁知道如何将我的 Ticker 列从 df 变成一个大字符串,在每个代码之间有一个 \n 或者每个代码都在一个新行上?

标签: pythonpandas

解决方案


您可以为此使用 to_csv。

df.to_csv("test.txt", columns=["Ticker"], header=False, index=False)

这提供了在未来某个时间点包含其他列、列名和索引值的灵活性(如果您需要做一些调查,或者您的老板要求提供更多信息)。您甚至可以更改分隔符。这将是一个简单的修改(明显的变化,例如):

df.to_csv("test.txt", columns=["Ticker", "Symbol",], header=True, index=True, sep="\t")

我认为这种方法相对于 jfaccioni 的答案的好处是灵活性和易于适应。这也使您远离显式打开文件。但是,如果您仍想显式打开文件,则应考虑使用“with”,当您跳出当前缩进时,它将自动关闭缓冲区。例如

with open("test.txt", "w") as fid:
    fid.write("MMM\nABT\n...etc.")

推荐阅读