gpt4 book ai didi

python - 删除不符合要求的列值

转载 作者:太空宇宙 更新时间:2023-11-03 11:23:30 25 4
gpt4 key购买 nike

我有一个带有“date_of_birth”列的 Pandas 数据框。例如,值采用 1977-10-24T00:00:00.000Z 的形式。

我想捕获年份,所以我尝试了以下方法:

X['date_of_birth'] = X['date_of_birth'].apply(lambda x: int(str(x)[4:]))

如果我保证前 4 个字母始终是整数,则此方法有效,但它在我的数据集上失败,因为某些日期被弄乱或垃圾。有没有一种方法可以在不使用正则表达式的情况下调整我的 lambda?如果没有,我怎么能用正则表达式写这个?

最佳答案

我认为只使用 to_datetime 会更好要转换为 datetime dtype,您可以使用 dropna 删除无效行并使用 dt.year 访问年份属性:

In [58]:
df = pd.DataFrame({'date':['1977-10-24T00:00:00.000Z', 'duff', '200', '2016-01-01']})
df['mod_dates'] = pd.to_datetime(df['date'], errors='coerce')
df

Out[58]:
date mod_dates
0 1977-10-24T00:00:00.000Z 1977-10-24
1 duff NaT
2 200 NaT
3 2016-01-01 2016-01-01

In [59]:
df.dropna()

Out[59]:
date mod_dates
0 1977-10-24T00:00:00.000Z 1977-10-24
3 2016-01-01 2016-01-01

In [60]:
df['mod_dates'].dt.year

Out[60]:
0 1977.0
1 NaN
2 NaN
3 2016.0
Name: mod_dates, dtype: float64

关于python - 删除不符合要求的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38311156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com