【问题标题】:Overwriting a Python Pandas series with another Pandas series, indexed by timestamps用另一个 Pandas 系列覆盖 Python Pandas 系列,按时间戳索引
【发布时间】:2022-01-26 04:23:17
【问题描述】:

我有一个名为“模板”的系列,它是 3600 个 0.00 美元(最后一小时每秒一个 0.00 美元,并被编入索引)。我有另一个名为“事务”的系列,它来自 API 请求的数据,该请求是可变数量的非零美元金额,也由时间戳索引。由于这些交易都是在过去一小时内完成的,“交易”中的所有时间戳都会在“模板”中找到,但反之则不然(除非过去一小时的每一秒都有交易)。

对于“模板”中与“交易”中的时间戳匹配的每个时间戳,我想用“交易”中的美元金额替换该 0.00 美元。我这样做是为了在最后一小时生成交易图,因此需要 0.00 美元而不是 NaN,以及 3600 个数据点(以保持图表时间轴的一致性)。

我确实认为它很简单:

graphSeries = template.update(transactions)

但是当我跑步时

print(template)
print(transactions)
print(graphSeries)

我明白了(最后的“无”是问题):

12-26-2021 21:30:39    0.0
12-26-2021 21:30:40    0.0
12-26-2021 21:30:41    0.0
12-26-2021 21:30:42    0.0
12-26-2021 21:30:43    0.0
                      ...
12-26-2021 22:30:34    0.0
12-26-2021 22:30:35    0.0
12-26-2021 22:30:36    0.0
12-26-2021 22:30:37    0.0
12-26-2021 22:30:38    0.0
Length: 3600, dtype: float64

12-26-2021 21:31:10      697986.00
12-26-2021 21:32:07     8780106.00
12-26-2021 21:32:54      900542.00
12-26-2021 21:34:52     8784483.00
12-26-2021 21:35:05    26309692.00
12-26-2021 21:39:48      500000.00
12-26-2021 21:39:55     1999940.00
12-26-2021 21:41:54     1189745.40
12-26-2021 21:43:21     1399102.56
12-26-2021 21:44:33     1607717.00
12-26-2021 21:46:13     1189745.40
12-26-2021 21:47:56     1000000.00
12-26-2021 21:49:08    12414533.00
12-26-2021 21:50:21     1546034.00
12-26-2021 21:50:30    13141109.60
12-26-2021 21:50:33     2277359.00
12-26-2021 21:50:39      503834.00
12-26-2021 21:50:51     1397967.00
12-26-2021 21:51:03      580000.00
12-26-2021 21:51:44      542158.00
12-26-2021 21:52:12     1546034.00
12-26-2021 21:54:04     1662123.80
12-26-2021 21:54:31    12052320.00
12-26-2021 21:54:52     1546024.00
12-26-2021 21:55:53     1000000.00
12-26-2021 21:56:30     1507000.00
dtype: float64

None

我做错了吗? pandas 的 update(Series) 方法不使用时间戳索引吗?

【问题讨论】:

  • 您能否使用 5 或 6 行来创建一个简单的问题示例。 stackoverflow.com/questions/20109391/…
  • 感谢@ScottBoston 提供的关于形成更好问题的指南。从现在开始我将使用它,但是在这个例子中,下面 Paul 的回答回答了我的问题。

标签: python pandas timestamp series


【解决方案1】:

更新是一个就地函数,试试:

template.update(transactions)
print(template)

关于update的更多信息:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.update.html

【讨论】:

  • 啊,非常感谢您的回答!有没有办法在 pandas 中使用 .update(series) 以外的不是就地函数的东西来做到这一点?为了参考这个问题的其他观众,这里是 pandas.Series 文档 (pandas.pydata.org/docs/reference/api/…)
  • 我问的原因是因为我需要重用我的模板系列。我想我可以根据需要做 template_copy = template.copy() ,然后 update() 副本。
  • 我认为复制是一个合理的解决方案?
猜你喜欢
  • 2015-07-02
  • 2018-01-15
  • 2016-02-11
  • 2019-08-23
  • 2017-04-10
  • 2023-03-10
  • 1970-01-01
  • 2015-09-02
  • 2021-05-30
相关资源
最近更新 更多