pandas 数据框中 datetime.index 列中两个连续日期之间的天数差异
Days Difference between two consecutive Dates in datetime.index column in pandas dataframe
下面是我的 Dataframe df
,其中包含日期时间索引。
Open High Low Close Volume Currency
Date
2021-04-20 14526.70 14526.95 14207.30 14296.40 456704720896 INR
2021-04-22 14219.15 14424.75 14151.40 14406.15 516985257984 INR
2021-04-23 14326.35 14461.15 14273.30 14341.35 476613607424 INR
2021-04-26 14449.45 14557.50 14421.30 14485.00 448533331968 INR
2021-04-27 14493.80 14667.55 14484.85 14653.05 442211696640 INR
... ... ... ... ... ... ...
2022-04-19 17258.95 17275.65 16824.70 16958.65 401400000 INR
2022-04-20 17045.25 17186.90 16978.95 17136.55 286070016 INR
2022-04-21 17234.60 17414.70 17215.50 17392.60 285200000 INR
2022-04-22 17242.75 17315.30 17149.20 17171.95 262740000 INR
2022-04-25 17006.10 17052.10 16889.75 16953.95 275571 INR
我想计算 datetime.index 列中两个连续“日期”之间的差异。
我尝试使用下面的代码,但如果两个日期之间的差异很大,它就不起作用。
代码:
df['date'] = df.index.day #Extract day from datetime.index
df['difference'] = df['date'].diff()
df
输出
Open High Low Close Volume Currency date difference
Date
2021-04-20 14526.70 14526.95 14207.30 14296.40 456704720896 INR 20 NaN
2021-04-22 14219.15 14424.75 14151.40 14406.15 516985257984 INR 22 2.0
2021-04-23 14326.35 14461.15 14273.30 14341.35 476613607424 INR 23 1.0
2021-04-26 14449.45 14557.50 14421.30 14485.00 448533331968 INR 26 3.0
2021-04-27 14493.80 14667.55 14484.85 14653.05 442211696640 INR 27 1.0
... ... ... ... ... ... ... ... ...
2022-04-19 17258.95 17275.65 16824.70 16958.65 401400000 INR 19 1.0
2022-04-20 17045.25 17186.90 16978.95 17136.55 286070016 INR 20 1.0
2022-04-21 17234.60 17414.70 17215.50 17392.60 285200000 INR 21 1.0
2022-04-22 17242.75 17315.30 17149.20 17171.95 262740000 INR 22 1.0
2022-04-25 17006.10 17052.10 16889.75 16953.95 275571 INR 25 3.0
252 rows × 8 columns
请告诉我计算 pandas
中连续两行之间的天数差异的解决方案
如果需要计算每个 Currency
的值,请使用 DataFrameGroupBy.diff
:
df['difference'] = df.index.to_series().groupby(df['Currency']).diff().dt.days
如果需要没有组使用Series.diff
:
df['difference'] = df.index.to_series().diff().dt.days
对于货币设置的计数值,您需要使用 groupby
df['difference'] = df.index.to_series().groupby(df['Currency']).diff().dt.days
下面是我的 Dataframe df
,其中包含日期时间索引。
Open High Low Close Volume Currency
Date
2021-04-20 14526.70 14526.95 14207.30 14296.40 456704720896 INR
2021-04-22 14219.15 14424.75 14151.40 14406.15 516985257984 INR
2021-04-23 14326.35 14461.15 14273.30 14341.35 476613607424 INR
2021-04-26 14449.45 14557.50 14421.30 14485.00 448533331968 INR
2021-04-27 14493.80 14667.55 14484.85 14653.05 442211696640 INR
... ... ... ... ... ... ...
2022-04-19 17258.95 17275.65 16824.70 16958.65 401400000 INR
2022-04-20 17045.25 17186.90 16978.95 17136.55 286070016 INR
2022-04-21 17234.60 17414.70 17215.50 17392.60 285200000 INR
2022-04-22 17242.75 17315.30 17149.20 17171.95 262740000 INR
2022-04-25 17006.10 17052.10 16889.75 16953.95 275571 INR
我想计算 datetime.index 列中两个连续“日期”之间的差异。
我尝试使用下面的代码,但如果两个日期之间的差异很大,它就不起作用。
代码:
df['date'] = df.index.day #Extract day from datetime.index
df['difference'] = df['date'].diff()
df
输出
Open High Low Close Volume Currency date difference
Date
2021-04-20 14526.70 14526.95 14207.30 14296.40 456704720896 INR 20 NaN
2021-04-22 14219.15 14424.75 14151.40 14406.15 516985257984 INR 22 2.0
2021-04-23 14326.35 14461.15 14273.30 14341.35 476613607424 INR 23 1.0
2021-04-26 14449.45 14557.50 14421.30 14485.00 448533331968 INR 26 3.0
2021-04-27 14493.80 14667.55 14484.85 14653.05 442211696640 INR 27 1.0
... ... ... ... ... ... ... ... ...
2022-04-19 17258.95 17275.65 16824.70 16958.65 401400000 INR 19 1.0
2022-04-20 17045.25 17186.90 16978.95 17136.55 286070016 INR 20 1.0
2022-04-21 17234.60 17414.70 17215.50 17392.60 285200000 INR 21 1.0
2022-04-22 17242.75 17315.30 17149.20 17171.95 262740000 INR 22 1.0
2022-04-25 17006.10 17052.10 16889.75 16953.95 275571 INR 25 3.0
252 rows × 8 columns
请告诉我计算 pandas
中连续两行之间的天数差异的解决方案如果需要计算每个 Currency
的值,请使用 DataFrameGroupBy.diff
:
df['difference'] = df.index.to_series().groupby(df['Currency']).diff().dt.days
如果需要没有组使用Series.diff
:
df['difference'] = df.index.to_series().diff().dt.days
对于货币设置的计数值,您需要使用 groupby
df['difference'] = df.index.to_series().groupby(df['Currency']).diff().dt.days