我正在尝试根据我拥有的数据计算一个人的年龄:
Data columns in 'Person' Dataframe:
TodaysDate non-null datetime64[ns]
YOB non-null float64
所以我想在该数据框中创建一个名为“Age”的新列,到目前为止我有以下代码:
Person['Age'] = map(sum, (Person.ix[0,'TodaysDate']).year, -(Person['YOB']))
TypeError: 'int' object is not iterable
我也尝试过:
Person['Age'] = map((Person.ix[0,'TodaysDate']).year - Person['YOB'])
TypeError: map() must have at least two arguments.
我尝试了其他问题上发布的几种不同方法,但似乎都不起作用。这看起来很简单,但无法让它发挥作用。
任何想法如何使用地图函数减去日期时间列TodaysDate
从浮动柱YOB
并将值放入Age
柱子?我想对数据框中的每一行执行此操作。
谢谢你!
这个答案主要是为了宣传assign http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.assign.html。我是以下的粉丝assign http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.assign.html因为它返回一个新的pd.DataFrame
那是旧的副本pd.DataFrame
包括附加列。在某些情况下,返回一个新的pd.DataFrame
更合适。我觉得语法干净直观。
另外,请注意,我在计算中添加了零值,因为我完全抄袭了@MaxU 的答案。
df.assign(Age=pd.datetime.now().year - df.YOB)
YOB Age
0 1955 62
1 1965 52
2 1975 42
3 1985 32
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)