2024-03-29 00:10:41 发布
网友
如何删除int64类型的数据帧列的最后两位?
例如df['DATE']包括:
df['DATE']
DATE 20110708 20110709 20110710 20110711 20110712 20110713 20110714 20110815 20110816 20110817
我想要的是:
DATE 201107 201107 201107 201107 201107 201107 201107 201108 201108 201108
最简单的方法是什么?
使用^{}将dtype转换为str,然后使用矢量化的^{}方法对str进行切片,然后再次转换回int64dtype:
int64
In [184]: df['DATE'] = df['DATE'].astype(str).str[:-2].astype(np.int64) df Out[184]: DATE 0 201107 1 201107 2 201107 3 201107 4 201107 5 201107 6 201107 7 201108 8 201108 9 201108 In [185]: df.info() <class 'pandas.core.frame.DataFrame'> Int64Index: 10 entries, 0 to 9 Data columns (total 1 columns): DATE 10 non-null int64 dtypes: int64(1) memory usage: 160.0 bytes
嗯。。。
原来有一个内置的方法^{}:
In [191]: df['DATE'].floordiv(100) Out[191]: 0 201107 1 201107 2 201107 3 201107 4 201107 5 201107 6 201107 7 201108 8 201108 9 201108 Name: DATE, dtype: int64
更新
对于1000行df,floordiv方法要快得多:
floordiv
%timeit df['DATE'].astype(str).str[:-2].astype(np.int64) %timeit df['DATE'].floordiv(100) 100 loops, best of 3: 2.92 ms per loop 1000 loops, best of 3: 203 µs per loop
这里我们观察到大约10倍的加速
您可以使用floor division//删除最后两个数字并保留整数类型:
//
>>> df['DATE'] // 100 DATE 0 201107 1 201107 2 201107 3 201107 4 201107 5 201107 6 201107 7 201108 8 201108 9 201108
使用^{} 将dtype转换为str,然后使用矢量化的^{} 方法对str进行切片,然后再次转换回
int64
dtype:嗯。。。
原来有一个内置的方法^{} :
更新
对于1000行df,
floordiv
方法要快得多:这里我们观察到大约10倍的加速
您可以使用floor division
//
删除最后两个数字并保留整数类型:相关问题 更多 >
编程相关推荐