Python 当我试图删除所有没有';不要以特定的名字开始?

Python 当我试图删除所有没有';不要以特定的名字开始?,python,python-3.x,pandas,csv,Python,Python 3.x,Pandas,Csv,我需要在历史股市数据CSV中删除大多数公司。我想保留的公司只有‘GOOG’、‘AAPL’、‘AMZN’、‘NFLX’。请注意,CSV中列出的公司超过20000家。我还想过滤掉这些公司,同时只使用CSV中的某些列。列为:“股票代码”、“日期键”、“资产”、“每股收益”、“市盈率”、“价格”、“收入” 筛选出这些公司的代码是: list = ['GOOG', 'AAPL', 'AMZN', 'NFLX'] for tickers in list: df1 = df[df.ticker ==

我需要在历史股市数据CSV中删除大多数公司。我想保留的公司只有‘GOOG’、‘AAPL’、‘AMZN’、‘NFLX’。请注意,CSV中列出的公司超过20000家。我还想过滤掉这些公司,同时只使用CSV中的某些列。列为:“股票代码”、“日期键”、“资产”、“每股收益”、“市盈率”、“价格”、“收入”

筛选出这些公司的代码是:

list = ['GOOG', 'AAPL', 'AMZN', 'NFLX']

for tickers in list:
    df1 = df[df.ticker == tickers]
    df1.to_csv("20CompanyAnalysisData1.csv", mode='a', header=False)

    continue
这段代码能够成功地只将我想要的列写入新的CSV,并且只列出我想要的公司的数据

问题是:新的CSV没有打印列名,这使得手动列出列名非常混乱,尤其是当我要添加更多数据列时

我正在读取的CSV示例(带有数据列):

然后,代码将在新的CSV中列出,如下所示:

4290,AAPL,1998-02-09,4126000000.0,0.003,,0.171,1578000000.0
4291,AAPL,1998-05-11,3963000000.0,0.004,,0.276,1405000000.0
4292,AAPL,1998-08-10,4041000000.0,0.006999999999999999,,0.33899999999999997,1402000000.0
然后我需要进入并手动添加列标题,以便最终的CSV(由我编辑)如下所示:

index,ticker,datekey,assets,eps,pe,price,revenue
4289,AAPL,1997-12-05,4233000000.0,,-1.9380000000000002,0.141,
4290,AAPL,1998-02-09,4126000000.0,0.003,,0.171,1578000000.0
4291,AAPL,1998-05-11,3963000000.0,0.004,,0.276,1405000000.0
当我正在使用数百个数据类别,并且无法手动输入它们时,我如何才能实现这一点

list = ['GOOG', 'AAPL', 'AMZN', 'NFLX']
first = True

for tickers in list:
    df1 = df[df.ticker == tickers]
    if first:
        df1.to_csv("20CompanyAnalysisData1.csv", mode='a', header=True)
        first = False
    else: 
        df1.to_csv("20CompanyAnalysisData1.csv", mode='a', header=False)
    continue
或者更紧凑

list = ['GOOG', 'AAPL', 'AMZN', 'NFLX']
needheader = True

for tickers in list:
    df1 = df[df.ticker == tickers]
    df1.to_csv("20CompanyAnalysisData1.csv", mode='a', header=neadheader)
    needheader = False
    continue

在保存文件之前指定列名(并删除标题=False),如下所示:

list = ['GOOG', 'AAPL', 'AMZN', 'NFLX']

for tickers in list:
    df1 = df[df.ticker == tickers]
    df1.columns=['index','ticker','datekey','assets','eps','pe','price','revenue']
    df1.to_csv("20CompanyAnalysisData1.csv", mode='a')

    continue

为什么要使用
header=False
。这很可能是列名未打印的原因。
list = ['GOOG', 'AAPL', 'AMZN', 'NFLX']

for tickers in list:
    df1 = df[df.ticker == tickers]
    df1.columns=['index','ticker','datekey','assets','eps','pe','price','revenue']
    df1.to_csv("20CompanyAnalysisData1.csv", mode='a')

    continue