python - 在不同的列中分离 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()
我希望看到两个单独的列。
解决方案
您只看到一列,因为在两个选定的列 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)
推荐阅读
- typescript - 如何告诉 TypeScript 我的属性可以是布尔值或具有特定签名的函数?
- mongodb - 基于另一个集合更新集合的字段 - MongoDB
- php - prettus 验证器无法正确验证日期
- python - 如何在 Python 中使用 matplotlib 绘制一条最佳拟合线?
- image - Tomcat 图像加载失败
- excel - 使用循环从一个工作簿复制到另一个工作簿
- arrays - 无法获得数组Angular中的第一项
- html - 删除 Jekyll 页面上的元素
- java - 为什么在导入 com.sun.management.OperatingSystemMXBean 时显示错误
- outlook - 带有多个日历的 Outlook:如何使用 VBA 确定选定的日历?