我有一个数据框,这是什么
In[1]: df1
Out[1]
Loan Date Negotiation
2019-03-31
2019-03-31
2019-03-31
as Loan Date Negotiation datetime64[ns]
所以我想做一个函数,从中减去2天。如果一个月的最后一天是星期天,我将从中减去2天。你知道吗
从上面的数据框来看,2019-03-31是星期天
我试过了,但失败了,这是
def subtractingDate(dateTime):
dateTimestamp = pd.Timestamp(dateTime)
newDate = dateTimestamp - pd.Timedelta("2 days")
return newDate
dfMARET.loc[dfMARET["Loan Date Negotiation"].dt.dayofweek == 6, "New Date"] = subtractingDate(dfMARET["Loan Date Negotiation"])
*note: 6 is for sunday
So the error is
TypeError Traceback (most recent call last)
<ipython-input-9-cc2a3348e6ce> in <module>
16 # a = subtractingDate(dfMARET["Loan Date Negotiation"])
17 # a
---> 18 dfMARET.loc[dfMARET["Loan Date Negotiation"].dt.dayofweek == 6, "New Date"] = subtractingDate(dfMARET["Loan Date Negotiation"])
19 dfMARET
20
<ipython-input-9-cc2a3348e6ce> in subtractingDate(dateTime)
10
11 def subtractingDate(dateTime):
---> 12 dateTimestamp = pd.Timestamp(dateTime)
13 newDate = dateTimestamp - pd.Timedelta(days = 2)
14 return newDate
pandas\_libs\tslibs\timestamps.pyx in pandas._libs.tslibs.timestamps.Timestamp.__new__()
pandas\_libs\tslibs\conversion.pyx in pandas._libs.tslibs.conversion.convert_to_tsobject()```
所以我的期望是
Loan Date Negotiation
2019-03-29
2019-03-29
2019-03-29
熊猫有什么解决办法?你知道吗
谢谢
你很接近!您只需要将传递的内容更改为
Timedelta()
。你知道吗举个例子:
输出:
如果需要先将datetime64转换为Timestamp,可以使用:
并使用
timedelta()
:或在整列
Date
上使用:编辑:完整示例:
M8[ns]
是datetime64[ns]
的一种特殊类型,因此在进一步处理中应该没有区别。你知道吗如果您只想在星期天减去两天,您可以使用
np.where()
:索引0和索引2的日期是星期天,减去2天。未触及索引1处的日期。你知道吗
通过对每个时间戳的列表理解选择
相关问题 更多 >
编程相关推荐