【问题标题】:When I download date and convert into DataFrame I lose the first column with data当我下载日期并转换为 DataFrame 时,我丢失了第一列的数据
【发布时间】:2023-03-12 11:05:01
【问题描述】:

我使用 quandl 下载股票价格。我有一份公司名称列表,我下载了所有信息。之后,我将其转换为数据框。当我只为一家公司做这件事时,一切都很好,但当我尝试同时为所有人做这件事时,就会出现问题。数据的第一列转换为索引值从 0 到 3 的数据插入

我的代码如下所示:

import quandl
import pandas as pd

names_of_company = [11BIT, ABCDATA, ALCHEMIA]

for names in names_of_company:
    x = quandl.get('WSE/%s' %names, start_date='2018-11-29', 
    end_date='2018-11-29',
    paginate=True)
    x['company'] = names
    results = results.append(x).reset_index(drop=True)

实际结果如下:

 Index Open   High    Low  Close  %Change   Volume  # of Trades  Turnover (1000)  company
    0  204.5  208.5  204.5  206.0     0.73   3461.0        105.0           717.31   11BIT
    1  205.0  215.0  202.5  214.0     3.88  10812.0        392.0          2254.83  ABCDATA 
    2  215.0  215.0  203.5  213.0    -0.47  12651.0        401.0          2656.15 ALCHEMIA  

但我期待:

Data         Open   High    Low  Close  %Change   Volume  # of Trades  Turnover (1000)  company
2018-11-29  204.5  208.5  204.5  206.0     0.73   3461.0        105.0           717.31   11BIT
2018-11-29  205.0  215.0  202.5  214.0     3.88  10812.0        392.0          2254.83  ABCDATA 
2018-11-29  215.0  215.0  203.5  213.0    -0.47  12651.0        401.0          2656.15 ALCHEMIA  

如您所见,数据存在问题,因为它无法转换为正确的方式。但正如我所说,如果我只为一家公司做这件事,它会奏效。下面是代码:

x = quandl.get('WSE/11BIT', start_date='2019-01-01', end_date='2019-01-03')

df = pd.DataFrame(x) 

我将非常感谢任何帮助!谢谢大家

【问题讨论】:

    标签: python-3.x dataframe web-scraping quandl


    【解决方案1】:

    当您将其存储到数据框时,日期就是您的索引。你会丢失它,因为当你使用 .reset_index() 时,你会覆盖旧索引(日期),而不是将日期添加为列,而是告诉它用 .reset_index(drop=True) 删除它

    所以我会追加,但是一旦填充了整个结果数据框,我就会重置索引,但不会因为默认为 false 而通过执行 results = results.reset_index(drop=False)results = results.reset_index() 来删除。

    import quandl
    import pandas as pd
    
    names_of_company = ['11BIT', 'ABCDATA', 'ALCHEMIA']
    
    results = pd.DataFrame()
    for names in names_of_company:
        x = quandl.get('WSE/%s' %names, start_date='2018-11-29', 
        end_date='2018-11-29',
        paginate=True)
        x['company'] = names
        results = results.append(x)
    
    results = results.reset_index(drop=False)
    

    输出:

    print (results)
            Date    Open    High    ...     # of Trades  Turnover (1000)   company
    0 2018-11-29  269.50  271.00    ...           280.0          1822.02     11BIT
    1 2018-11-29    0.82    0.92    ...           309.0          1027.14   ABCDATA
    2 2018-11-29    4.55    4.55    ...             1.0             0.11  ALCHEMIA
    
    [3 rows x 10 columns]
    

    【讨论】:

    • 你是最好的伙伴!非常感谢
    猜你喜欢
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多