Python Panda 在循环中追加数据帧

Nil*_*ngh 0 python dataframe pandas

我正在尝试将许多数据帧附加到一个空数据帧中,但它不起作用。为此,我正在使用本教程,我的代码如下:

我正在循环内生成一个框架,我的代码是:

def loop_single_symbol(p1):
    i = 0
    delayedPrice = []
    symbol = [] 
    while i<5 :
        print(p1)
        h = get_symbol_data(p1)
        delayedPrice.append(h['delayedPrice']) 
        symbol.append(h['symbol'])
        i+=1
    df = pd.DataFrame([], columns = []) 
    df["delayedPrice"] = delayedPrice
    df["symbol"] = symbol
    df["time"] = get_nyc_time()
    return df 
    time.sleep(4) 
Run Code Online (Sandbox Code Playgroud)

这段代码生成一个像这样的框架:

   delayedPrice symbol time
0          30.5    BAC  6:6
1          30.5    BAC  6:6
2          30.5    BAC  6:6
3          30.5    BAC  6:6
4          30.5    BAC  6:6
Run Code Online (Sandbox Code Playgroud)

我正在运行这样的循环:

length = len(symbol_list())
data = ["BAC","AAPL"]
df = pd.DataFrame([], columns = []) 
for j in range(length): 
    u = data[j]
    if h:
        df_of_single_symbol = loop_single_symbol(u)
        print(df_of_single_symbol)
        df.append(df_of_single_symbol, ignore_index = True)        
print(df)
Run Code Online (Sandbox Code Playgroud)

我正在尝试将两个或多个数据帧附加到一个空数据帧中,但使用上面的代码我得到:

Empty DataFrame
Columns: []
Index: []
Run Code Online (Sandbox Code Playgroud)

我想要这样的结果:

   delayedPrice symbol time
0          30.5    BAC  6:6
1          30.5    BAC  6:6
2          30.5    BAC  6:6
3          30.5    BAC  6:6
4          30.5    BAC  6:6
0        209.15   AAPL  6:6
1        209.15   AAPL  6:6
2        209.15   AAPL  6:6
3        209.15   AAPL  6:6
4        209.15   AAPL  6:6
Run Code Online (Sandbox Code Playgroud)

我该如何使用 panda 来做到这一点以及最好的方法是什么。

注意:这里这一行

h = get_symbol_data(p1)
Run Code Online (Sandbox Code Playgroud)

正在从 API 获取一些数据

qme*_*eus 5

正如我在评论中提到的,附加到 pandas 数据帧并不被认为是一个很好的方法。相反,如果您需要可扩展性,我建议您使用更合适的东西来存储数据,例如文件或数据库。

然后,您可以使用 pandas 进行其构建,即通过将数据库或文件的内容读入数据帧来进行数据分析。

现在,如果您真的想坚持使用这种方法,我建议您要么随着join获得concat更多数据而增加数据框

[编辑]

示例(来自我的脚本之一):

results = pd.DataFrame()
for result_file in result_files:
    df = parse_results(result_file)
    results = pd.concat([results, df], axis=0).reset_index(drop=True)

Run Code Online (Sandbox Code Playgroud)

parse_results是一个函数,它接受一个文件名并返回一个以正确方式格式化的数据帧,由您决定是否满足您的需求。