在 pandas 中删除包含特定数字模式 (int64) 的行

Drop rows containing a certain numeric pattern (int64) in pandas

竟然找不到简单的答案。

我在数据框中有两列。 Column1 是 int64.

Column1  Column2
19970101  400
19970102  300
19980101  200

如何删除 Column1 中具有 1997 模式的行?它不是字符串,所以我相信正则表达式不起作用。

我想我可以把它分成两部分并删除所有行,只需要分开 1997,然后再次组合,但如果能找到更简单的解决方案就更好了。

谢谢!

嗯:

df[df['Column1']//10000 != 1997]

或将其转换为字符串:

df[df['Column1'].astype(str).str[:4] != '1997']

然后转换为str

df[~df['Column1'].astype(str).str.startswith('1997')]
Out[49]: 
    Column1  Column2
2  19980101      200

当我们使用 datetime 对象到期时,我们总是可以做 to_datetime

df[pd.to_datetime(df.Column1,format='%Y%m%d').dt.year!=1997]
Out[52]: 
    Column1  Column2
2  19980101      200