【发布时间】:2020-06-12 00:26:16
【问题描述】:
我猜我有这种格式的日期 2011 年 12 月 29 日作为字符串,我只需要年份,所以我编写了这个函数来仅提取年份,但我得到了
“ValueError:无法将浮点 NaN 转换为整数”
好像我在某个地方有 Nan,我能想到的唯一解决方案是删除 Nan's 的行,但我不能这样做,因为我需要其他列的数据。
def get_year(date):
year = ''
try:
year = date[-4:]
except TypeError:
year = str(date)[0:4]
return (year).astype(int)
get_year 函数在我使用此代码时起作用
for i in df.index:
if (not pd.isna(df['yearOpened'][i]) and get_year(df['yearOpened'][i]) > 1955):
print('something')
我正在使用 .loc 并且想知道如何跳过 Nan 使用 .loc
`df.loc[get_year(df['yearOpened'])]`
【问题讨论】:
-
没有日期。你不能只是出现一个正确的日期。抛出此错误时将什么值传递给
get_year? -
@ifly6 列 'yearOpened' 中的值以这些格式作为字符串 1999 年 12 月 12 日
-
ValueError Traceback (most recent call last) <ipython-input-194-92a26aa153b4> in <module> ----> 1 df.loc[get_year(df['yearOpened'])] <ipython-input-190-271b55d3efdf> in get_year(date) 7 year = str(date)[0:4] 8 # print(year[0:4]) ----> 9 return (year).astype(int) -
只需使用
pd.to_datetime(your_string_series)解析它们,然后使用date_series.dt.year访问日期