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

时间:2020-09-17 03:44:20

标签: python pandas numeric

令人惊讶的是找不到一个简单的答案。

我在数据框中有两列。列1为int64

Column1  Column2
19970101  400
19970102  300
19980101  200

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

我想我可以将其分为两部分并删除所有行,只是分别拥有1997,然后再次合并,但是找到一个更简单的解决方案将非常有用。

谢谢!

2 个答案:

答案 0 :(得分:3)

嗯:

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

或将其转换为字符串:

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

答案 1 :(得分:2)

然后转换为str

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

当我们使用日期时间对象时,我们总是可以to_datetime

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