【问题标题】:Convert time delta to float64 of number of days将时间增量转换为天数的 float64
【发布时间】:2019-07-03 06:05:04
【问题描述】:

我有两个系列的熊猫日期时间。我为数据框中的每一行减去它们并添加一列以获得两个日期时间之间的时间增量。随后,我想使用该时间增量来扩展另一个功能。所以我想对那个时间增量做一些划分。没有骰子。

TypeError: 无法将 float64 数据除以 TimedeltaArray

最后一行抛出错误。

我尝试使用 float64(i) 循环运行 pd 系列


#Add column of number of days to next sample
df['daysToNextSample1']=df['nextSampleDate1']-df['currentDate']
df['percentChange']=df['percentChange']/df['daysToNextSample1']/(365.25/4)

【问题讨论】:

  • 您能否添加一些示例数据,以便我们知道这些列的外观?

标签: python pandas


【解决方案1】:

设置

now = pd.Timestamp('now').normalize()
df = pd.DataFrame(dict(
    nextSampleDate1=pd.date_range(now, periods=10),
    currentDate=now
))

df

  nextSampleDate1 currentDate
0      2019-07-02  2019-07-02
1      2019-07-03  2019-07-02
2      2019-07-04  2019-07-02
3      2019-07-05  2019-07-02
4      2019-07-06  2019-07-02
5      2019-07-07  2019-07-02
6      2019-07-08  2019-07-02
7      2019-07-09  2019-07-02
8      2019-07-10  2019-07-02
9      2019-07-11  2019-07-02

Timedelta 列除以一天的Timedelta

oneday = pd.Timedelta(days=1)

df['daysToNextSample1'] = (df['nextSampleDate1'] - df['currentDate']) / oneday

df

  nextSampleDate1 currentDate  daysToNextSample1
0      2019-07-02  2019-07-02                0.0
1      2019-07-03  2019-07-02                1.0
2      2019-07-04  2019-07-02                2.0
3      2019-07-05  2019-07-02                3.0
4      2019-07-06  2019-07-02                4.0
5      2019-07-07  2019-07-02                5.0
6      2019-07-08  2019-07-02                6.0
7      2019-07-09  2019-07-02                7.0
8      2019-07-10  2019-07-02                8.0
9      2019-07-11  2019-07-02                9.0

【讨论】:

  • 谢谢,piRSquared。我通过将每个时间增量除以 np.timedelta64(1,'D') 来做到这一点
【解决方案2】:

MRE 在您的情况下是理想的。您无需猜测df['percentChange'] 中的内容给读者。

您可以轻松地对该时间增量进行一些划分

pd.Timedelta('1 days 00:00:00') / 1.5
Out[15]: Timedelta('0 days 16:00:00')

24/1.5
Out[16]: 16.0

问题是您正在尝试执行以下操作,这是一个类型错误:

5.0 / pd.Timedelta('1 days 00:00:00')

【讨论】:

  • 百分比变化 == '超级机密的公司资料'。哈哈。
猜你喜欢
  • 1970-01-01
  • 2016-06-14
  • 2017-08-24
  • 2023-03-16
  • 1970-01-01
  • 2021-08-27
  • 1970-01-01
  • 2019-06-06
  • 1970-01-01
相关资源
最近更新 更多