创建格式化的DataFrame,然后逐行添加数据

时间:2017-12-08 16:46:26

标签: python-2.7 pandas

我有一个连续的数据流进来,所以我想事先定义DataFrame,这样我就没有告诉pandas来格式化数据或设置索引

所以我想创建一个像

这样的DataFrame
df = pd.DataFrame(columns=["timestamp","stockname","price","volume"])

但是我想告诉Pandas数据索引应该是时间戳,格式是

"%Y-%m-%d %H:%M:%S:%f"

并设置了一个,然后我将读取文件并将数据传递给DataFrame初始化

我在每次循环填充的变量中获取数据,如

for line in filehandle:

    timestamp, stockname, price, volume = fetch(line)

    here I want to update the "df"

这个更新会在我继续使用

的副本时继续
df

让我们说一下

tempdf

在任何给定时间点进行重新采样或任何其他任务,因为原始数据帧

df

正在不断更新

1 个答案:

答案 0 :(得分:1)

import numpy as np
import pandas as pd
import datetime as dt
import time

# create df with timestamp as index
df = pd.DataFrame(columns=["timestamp","stockname","price","volume"], dtype = float)
pd.to_datetime(df['timestamp'], format = "%Y-%m-%d %H:%M:%S:%f")
df.set_index('timestamp', inplace = True)

for i in range(10): # for the purposes of functioning demo code
    i += 1 # counter
    time.sleep(0.01) # give jupyter notebook a moment
    timestamp = dt.datetime.now() # to be used as index
    df.loc[timestamp] = ['AAPL', np.random.randint(1000), np.random.randint(10)] # replace with your database read

tempdf = df.copy()

如果您正在连续阅读文件或数据库,可以将for:loop替换为您在问题中描述的内容。 @MattR的问题也应该得到解决;如果您需要不断记录或更新数据,我不确定大熊猫是否是最佳解决方案。