检查熊猫中的重复数据

时间:2019-11-27 05:52:38

标签: python python-3.x pandas

我有以下代码:

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中下载间谍代码数据并将其附加到data1并将其保存在csv文件中。

data1的输出如下所示: enter image description here

问题

  • 我如何摆脱Unnamed:0列,为什么会有它?
  • 如何检查data中的重复数据并将其附加到data1

2 个答案:

答案 0 :(得分:2)

所以您基本上有两个问题,我将一一解决。

问题1

如果要删除列Unnamed:0,则必须使用data1.drop(['Unnamed:0'], axis = 1),这将从表中删除该列。

问题2

现在,如果要删除重复的行,可以使用data.drop_duplicates(),这将删除重复的行并保持第一行不变。之后,您可以简单地pandas.concat(data1, data)

您基本上需要在pandas文档中查找方法,所有内容都以粗体和清晰的方式提到。 希望这会有所帮助。

答案 1 :(得分:2)

对于有关添加的未命名列的第一个问题:尝试根据对同一主题的this问题的可接受答案,传递index=Falseindex_col=0。 这迫使熊猫将第一列作为索引读取,因此不会添加其他列。