python - 删除重复数据并将其余数据附加到 Pandas 中

标签 python pandas while-loop

我有以下代码:

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/

相关文章:

python - 如何限制某些用户输入?

python - 使用 Scrapy,如何检查 robots.txt 文件允许单个页面上的链接?

python - Pandas 检查列是否是类别问题

python - 选择两个 DatetimeIndex 日期之间的行

php - 使用 php 对大型 mysql 结果进行分类时?

c - 我的代码在 C 中看不到 while 循环(使用 getchar 函数)

java - While 循环未使用 jframe 实现执行

python - 您可以通过同名的字典键更新实例变量吗?

python - 如何同步Python子进程的输出

python - 使用 odo 将巨大的 h5 文件与多个数据集合并为一个