首页 > 解决方案 > 熊猫和重复日期的麻烦

问题描述

我有一个带有以下示例输出的 csv 文件:

3/12/1970
3/1/1942
10/20/1945  10/20/1945
10/27/1960
10/5/1952

我用 df = pd.read_csv(filename) 将它带入 pandas。

我知道有如上所述的双日期行。此列的 dtype 是 pandas 中的对象。当试图在 pandas 中将此列转换为日期时间格式时,我在所有具有此双日期问题的行上都出现错误,并且必须在 csv 中一一查找和编辑它们。因此,我尝试了以下方法来清除我的 50K 行中存在此双日期问题的所有行:

df[col] = df[col].str.strip()
df[col] = df[col].str[:10]

根本不影响任何双日期。

我还尝试计算 col 中每个值的长度,然后如果结果 col 长度超过 10,则简单地删除日期值。但是,双日期行仍然存在。

我还尝试了以下方法来定位这个特定的行以进一步检查它,但是这个代码导致 0 行。

bad_dates = df[df[col].str.contains('10/20/1945')]

那么,有什么创意可以清理这些重复日期吗?(它可能发生在一百个随机分布的列值上)

标签: pythonpandasstringdata-cleaning

解决方案


你可以使用 split 来做到这一点。

split()将每一行拆分(str)为一个由空格拆分的值列表,然后 [-1] 仅选择最后一个值,这将消除所有额外的值并根据需要仅保留单个值。

df['col'].apply(lambda x: x.split()[-1])

推荐阅读