我有一张桌子看起来像这样
Transaction_Date | Name | Birth_Date
1/01/15 | Tom | 16/11/89
1/01/15 | Kate | 8/03/65
....
1/01/15 | Ken | 14/05/64
Transaction_Date和Birth_Date的数据类型为str
我想按(交易日期-出生日期)添加年龄列
我的代码是
tableA['Transaction_Date'] = pd.to_datetime(join_table['Transaction_Date'])
tableA['Birth_Date'] = pd.to_datetime(join_table['Birth_Date'])
tableA['Age'] = tableA['Transaction_Date'] - tableA['Birth_Date']).astype('<m8[Y]'
结果如下
Transaction_Date | Name | Birth_Date | Age
2015-01-01 | Tom | 1989-11-16 | 25.0
2015-01-01 | Kate | 2065-03-08 | -50.0
....
2015-01-01 | Ken | 2064-05-14 | -49.0
《多美的生日》是正确的,但凯特或肯都错了。对于凯特来说应该是“ 1965-03-08”,对于肯来说应该是“ 1964-05-14”
问题:如何计算具有int类型的Age?
当我使用
int(tableA['Age'] = tableA['Transaction_Date'] - tableA['Birth_Date']).astype('<m8[Y]'
#TypeError: cannot convert the series to <class 'int'>)
谢谢。
答案 0 :(得分:1)
尝试一下,必须工作。
df['birth_date'] = pd.to_datetime(df['Birth_Date'].str[:-2] + '19' + df['Birth_Date'].str[-2:])
要计算AGE,您必须执行以下操作:
df['transaction_date'] = pd.to_datetime(df['Transaction_Date'])
df['age'] = df['transaction_date'].dt.year - df['birth_date'].dt.year