如何在python中删除pandas数据框列中每个元素的最后2个字符?



我有一个大数据框(df),在最后一列中,所有元素都显示为

1055.0000.0

所以最后两个字符总是"。0"。最有效的方法是什么?最后一个列的名称总是不同的,所以我不知道如何处理这一点。我曾尝试过在pandas上循环,但它占用了太多的内存并破坏了代码。有没有办法做一些像

df[最后一列]= df[最后一列-最后两个字符]

或者创建一个新的df,然后将它附加在?

向量化操作几乎总是更快。.str方法允许pandas向量化字符串

df["last_col"].str[:-2]

可以在jupyter notebook中使用%%timeitmagic命令来计时。

%%timeit
df.iloc[:, -1].str[-2:]
>>> 352 µs ± 4.68 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%%timeit
df["last_col"].str[:-2]
>>> 242 µs ± 4.76 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

您也可以使用rsplit:

s = '105.0000.0'
s.rsplit('.0', 1)[0]

输出:

105.0000

尝试使用str访问器:

df.iloc[:, -1] = df.iloc[:, -1].astype(str).str[-2:].astype(int)

相关内容

  • 没有找到相关文章