在 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
竟然找不到简单的答案。
我在数据框中有两列。 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