gpt4 book ai didi

python - 从数据框列中提取异常

转载 作者:太空宇宙 更新时间:2023-11-04 06:58:24 25 4
gpt4 key购买 nike

我正在尝试探索我拥有的数据,但我发现我的数据中有很多异常。数据框的日期列的日期类似于“12012-09-14”和“2500-09-28”。我想用“2250-05-05”替换它们。

我想在 df1 中保留有效日期,并将那些无效日期保留在列表中

df1:

col col2        date 
1 b1a2 NaN
2 bal2 12012-09-14
3 a3l2 12017-09-14
4 a5l2 2019-09-24
5 a8l2 2012-09-28
6 a1l2 12113-09-14
7 a0l2 12012-09-24
8 a2l2 2500-09-28
9 a6l2 2500-09-14
10 a5l2 2012-09-24

谁能帮我提取那些无效日期?

预期输出:

    col col2    date
0 1 b1a2 2250-05-05
1 2 bal2 2250-05-05
2 3 a3l2 2250-05-05
3 4 a5l2 2019-09-24
4 5 a8l2 2012-09-28
5 6 a1l2 2250-05-05
6 7 a0l2 2250-05-05
7 8 a2l2 2250-05-05
8 9 a6l2 2250-05-05
9 10 a5l2 2012-09-24

无效日期的唯一列表:

invalid_list = ['12012-09-14','12017-09-14','12113-09-14','12012-09-24','2500-09-28']

最佳答案

你可以使用 pd.to_datetimefillna填写指定日期:

new_date = pd.to_datetime("2250-05-05")
df['date'] = pd.to_datetime(df.date, errors='coerce').fillna(new_date)

col col2 date
0 1 b1a2 2250-05-05
1 2 bal2 2250-05-05
2 3 a3l2 2250-05-05
3 4 a5l2 2019-09-24
4 5 a8l2 2012-09-28
5 6 a1l2 2250-05-05
6 7 a0l2 2250-05-05
7 8 a2l2 2250-05-05
8 9 a6l2 2250-05-05
9 10 a5l2 2012-09-24

更新

为了获取列表中的无效日期:

to_dt = pd.to_datetime(df.date, errors='coerce')
invalid_list = df.loc[to_dt[to_dt.isna()].index, 'date'].dropna().values.tolist()
df['date'] = to_dt.fillna(new_date)

print(invalid_list)
['12012-09-14',
'12017-09-14',
'12113-09-14',
'12012-09-24',
'2500-09-28',
'2500-09-14']

关于python - 从数据框列中提取异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56797267/

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