我有以下代码:
import pandas as pd
import datetime
import pandas as pd
from pandas_datareader import data as web
import matplotlib.pyplot as plt
from alpha_vantage.foreignexchange import ForeignExchange
import os
from os import path
from alpha_vantage.timeseries import TimeSeries
import matplotlib.pyplot as plt
import sys
while True:
if path.exists('stockdata.csv') == True:
data1 = pd.read_csv('stockdata.csv')
ts = TimeSeries(key='1ORS1XLM1YK1GK9Y', output_format='pandas')
data, meta_data = ts.get_intraday(symbol = 'spy', interval='1min', outputsize='full')
data = data.rename(columns={'1. open':'Open','2. high': 'High','3. low': 'Low', '4. close':'Close', '5. volume': 'Volume'})
data1 = data1.append(data)
data1.to_csv('stockdata.csv', sep= ' ')
break
else:
data1 = pd.DataFrame(columns=['Open','High','Low', 'Close','Volume'])
data1.to_csv('stockdata.csv', sep= ' ')
我想做的是检查文件 stockdata.csv
是否在当前目录中。如果未找到,则创建该文件。
如果找到该文件,则下载 data
中的 spy 代码数据并将该数据附加到 data1
并将其保存在 csv 文件中。
这假设运行 24/7,我将包括一个 12 小时的 sleep 定时器,因此它每 12 小时更新一次数据。
- 我希望数据框删除重复数据并仅附加新数据。
最佳答案
所以你想创建一个空文件,如果它不存在,然后继续添加所有新数据。我的建议是读取新数据并进行过滤,使其只包含新行。然后您可以使用附加模式 ( see here ) 保存数据框。
from os import path
import pandas as pd
from alpha_vantage.timeseries import TimeSeries
while True:
if path.exists("stockdata.csv"):
# Get new data
ts = TimeSeries(key="1ORS1XLM1YK1GK9Y", output_format="pandas")
data, meta_data = ts.get_intraday(symbol="spy", interval="1min", outputsize="full")
data = data.rename(
columns={
"1. open": "Open",
"2. high": "High",
"3. low": "Low",
"4. close": "Close",
"5. volume": "Volume",
}
)
# Filter only new rows
data1 = pd.read_csv("stockdata.csv")
data = data[~data.index.isin(data1.index)]
# Append new rows (add new rows to the existing ones)
data.to_csv("stockdata.csv", sep=" ", mode='a')
else:
data1 = pd.DataFrame(columns=["Open", "High", "Low", "Close", "Volume"])
data1.to_csv("stockdata.csv", sep=" ")
我还清理了未使用的导入以使其更具可读性。
关于python - 删除重复数据并将其余数据附加到 Pandas 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59062789/