首页 > 解决方案 > 在不同的列中分离 Python Web 抓取的数据

问题描述

我尝试使用 API 抓取数据并将这些结果放入 CSV 文件中。但是当我打开我的 CSV 文件时,所有数据都放在 1 列(A)中。相反,我希望将数据分隔在不同的列中(A 和 B(以及 C、D、E、F 等,当我想添加信息时))。我怎样才能做到这一点?

import requests
import pandas as pd
from pandas.compat import StringIO
import numpy as np
import datetime as dt
from dateutil.relativedelta import relativedelta
import csv

csv_file = open('/Users/katewang/Desktop/Test/scrape.csv', 'w')
csv_writer = csv.writer(csv_file)

def get_EOD_data(api_token='5cb671b0b4a790.35526238', session = None, tickers = 'AAPL', start_date = dt.datetime(2018,1,1), end_date = dt.datetime(2018,12,31)):
    symbols = tickers
    if session is None:
        session = requests.Session()

    url = 'https://eodhistoricaldata.com/api/eod/%s.US' % symbols
    params = {"api_token": api_token, "from": start_date, "to": end_date}
    r = session.get(url, params = params)
    if r.status_code == requests.codes.ok:


    cols=[0,5]
    df = pd.read_csv(StringIO(r.text), skipfooter = 1, parse_dates = [0], engine = 'python', na_values=['nan'], index_col = 0, usecols = cols)

    df.fillna(method = 'ffill', inplace = True)
    df.fillna(method = 'bfill', inplace = True)
    return df

def main():
    df_data = get_EOD_data()
    csv_writer.writerow([df_data])

if __name__ == '__main__':
    main()

csv_file.close()

我希望看到两个单独的列。

标签: pythonexcel

解决方案


您只看到一列,因为在两个选定的列 0 和 5 中,您在创建数据框时将列 0 设置为索引。这仅留下第 5 列作为实际列。

index_col = 0您可以通过从行中删除来检查自己

df = pd.read_csv(StringIO(r.text), skipfooter = 1, parse_dates = [0], engine = 'python', na_values=['nan'], index_col = 0, usecols = cols)


推荐阅读