计算两个日期之间的整月数量?

KMF*_*MFR 2 python datetime python-datetime pandas

时间序列的第一个和最后一个日期如下:

firstday = transactions["Date"].head(1)
firstday
lastday = transactions["Date"].tail(1)
lastday

Dateindex
2017-12-30   2017-12-30
Name: Date, dtype: datetime64[ns]
Dateindex
2018-12-31   2018-12-31
Name: Date, dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)

我想要以下两件事:

1)获取第一天和最后一天作为"2017-12-30"和"2018-12-31"(字符串),而不是 dtype('<M8[ns]')

2)计算这些日期之间的整月数(正确的输出为12个月)

任何想法如何实现这些?谢谢.

jez*_*ael 6

选择第一个和最后一个值Series.iat:

firstday = transactions["Date"].iat[0]
lastday = transactions["Date"].iat[-1]
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用Index.get_loc为列位置DateDataFrame.iat:

firstday = transactions.iat[0, transactions.columns.get_loc('Date')]
lastday = transactions.iat[-1, transactions.columns.get_loc('Date')]
Run Code Online (Sandbox Code Playgroud)
print (firstday)
2017-12-30 00:00:00

print (lastday)
2018-12-31 00:00:00
Run Code Online (Sandbox Code Playgroud)

对于差异转换时间戳到月期间Timestamp.to_period和减去:

diff = lastday.to_period('m') - firstday.to_period('m')
print (diff)
12
Run Code Online (Sandbox Code Playgroud)