Pandas 使用参考日期将日期格式转换为整数
Pandas convert date format to an integer using a reference date
我正在尝试使用参考日期 01/10/2021 (0) 将日期格式的数据列转换为整数。例如,01/07/2021 等于 92,10/10/2021 等于 -9。
可以在 excel 中完成,但是 pandas 在尝试从参考日期中减去日期时会生成类型错误。
TypeError: unsupported operand type(s) for -: 'str' and 'str'
您需要先使用 pandas.to_datetime 将日期列从 str
转换为 datetime
。
这是一个例子:
import pandas as pd
d = pd.DataFrame({'date': ['01/10/2021', '01/07/2021', '10/10/2021']})
d['date'] = pd.to_datetime(d['date'], dayfirst=True)
d['date'][0] - d['date']
输出:
0 0 days
1 92 days
2 -9 days
IIUC,转换to_datetime
and perform a subtraction with the reference timestamp. Then extract the days with dt.days
:
df = pd.DataFrame({'date': ['01/07/2021', '01/10/2021', '10/10/2021']})
df['delta'] = (pd.to_datetime(df['date'], dayfirst=True)
.rsub(pd.to_datetime('01/10/2021', dayfirst=True))
.dt.days
)
输出:
date delta
0 01/07/2021 92
1 01/10/2021 0
2 10/10/2021 -9
我正在尝试使用参考日期 01/10/2021 (0) 将日期格式的数据列转换为整数。例如,01/07/2021 等于 92,10/10/2021 等于 -9。
可以在 excel 中完成,但是 pandas 在尝试从参考日期中减去日期时会生成类型错误。
TypeError: unsupported operand type(s) for -: 'str' and 'str'
您需要先使用 pandas.to_datetime 将日期列从 str
转换为 datetime
。
这是一个例子:
import pandas as pd
d = pd.DataFrame({'date': ['01/10/2021', '01/07/2021', '10/10/2021']})
d['date'] = pd.to_datetime(d['date'], dayfirst=True)
d['date'][0] - d['date']
输出:
0 0 days
1 92 days
2 -9 days
IIUC,转换to_datetime
and perform a subtraction with the reference timestamp. Then extract the days with dt.days
:
df = pd.DataFrame({'date': ['01/07/2021', '01/10/2021', '10/10/2021']})
df['delta'] = (pd.to_datetime(df['date'], dayfirst=True)
.rsub(pd.to_datetime('01/10/2021', dayfirst=True))
.dt.days
)
输出:
date delta
0 01/07/2021 92
1 01/10/2021 0
2 10/10/2021 -9