【发布时间】:2022-01-23 21:04:37
【问题描述】:
我有一个奇怪的问题。
我得到一些这样的数据:
save_last_row = exchange.fetch_ohlcv('BTC/USD', timeframe='1m', limit=2)
save_last_row = pd.DataFrame(save_last_row[:-1],columns=['Date Time', 'Open', 'High', 'Low', 'Close', 'Volume'])
数据看起来像这样:
Date Time Open High Low Close Volume
0 1640190840000 49075.0 49085.0 49044.0 49071.0 147792.0244
这是一个循环,所以我得到每个循环的最后一行。 奇怪的是,当我这样做之后:
last_row = save_last_row
last_row = function_convert(last_row)
我为 last_row 获得了:
Date Time Open High Low Close Volume
0 2021-12-22 17:41:00 49041.0 49073.0 49029.0 49033.0 136169.2562
我们可以看到日期时间的格式不同。如果我打印 save_last_row (我没有修改),我有:
Date Time Open High Low Close Volume
0 2021-12-22 17:41:00 49041.0 49073.0 49029.0 49033.0 136169.2562
为什么???? Last_row 仅从 save_last_row 中获取数据。如何修改变量 save_last_row ???
注意:function_convert 只是修改一些值:
def conversion_date(df):
df["Date Time"] = df["Date Time"] + 3600000 # add one hour to have local time
df["Date Time"] = (df["Date Time"].apply(parse_dates)) # convert
return df
编辑:变量 last_row 已转换(确定),但 save_last_row 也! (这不行,我没有转换它)那为什么??
EDIT2:使用 save_last_row.copy() 谢谢克里斯·多伊尔
【问题讨论】:
-
parse_dates是我们应该知道的吗?某处有内置功能吗?乍一看,您最初拥有的是具有毫秒精度的 Unix 时间。parse_dates正在以某种方式转换它。 -
def parse_dates(ts): return datetime.fromtimestamp(ts/1000.0)
-
当你有日期授予功能时,为什么日期格式会发生变化......
-
我认为你的困惑是
last_row = save_last_row没有复制数据框,它只是说 last_row 和 save_last_row 现在指向同一个数据框。因此,如果您修改 last_row,您修改的是 save_last_row 指向的同一数据框。相反,也许你想要last_row = save_last_row.copy() -
可能应该作为以下副本关闭:stackoverflow.com/questions/2612802/…
标签: python python-3.x