Pandas:将日期'对象&39;转换为int[英] Pandas: convert date 'object' to int

本文是小编为大家收集整理的关于Pandas:将日期'对象&39;转换为int的处理方法,想解了Pandas:将日期'对象&39;转换为int的问题怎么解决?Pandas:将日期'对象&39;转换为int问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有一个 Pandas 数据框,我需要将带有日期的列转换为 int,但不幸的是,所有给定的解决方案最终都会出现错误(如下)

test_df.info()

<class 'pandas.core.frame.DataFrame'>
Data columns (total 4 columns):
Date        1505 non-null object
Avg         1505 non-null float64
TotalVol    1505 non-null float64
Ranked      1505 non-null int32
dtypes: float64(2), int32(1), object(1) 

样本数据:

    Date        Avg             TotalVol  Ranked
0   2014-03-29  4400.000000     0.011364    1
1   2014-03-30  1495.785714     4.309310    1
2   2014-03-31  1595.666667     0.298571    1
3   2014-04-01  1523.166667     0.270000    1
4   2014-04-02  1511.428571     0.523792    1

我认为我已经尝试了所有方法,但没有任何效果

test_df['Date'].astype(int):

TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是 'datetime.date'

test_df['Date']=pd.to_numeric(test_df['Date']):

TypeError:位置 0 处的对象类型无效

test_df['Date'].astype(str).astype(int):

ValueError: int() 以 10 为底的无效文字:'2014-03-29'

test_df['Date'].apply(pd.to_numeric, errors='coerce'):

将整列转换为 NaN

推荐答案

test_df['Date'].astype(int) 给你错误的原因是你的日期仍然包含连字符"-".首先通过执行 test_df['Date'].str.replace("-","") 来抑制它们,然后您可以将第一个方法应用于结果系列.所以整个解决方案是:

test_df['Date'].str.replace("-","").astype(int)请注意,如果您的"Date"列不是字符串对象,这将不起作用,通常是当 Pandas 已经将您的系列解析为时间戳时.在这种情况下,您可以使用:

test_df['Date'].dt.strftime("%Y%m%d").astype(int)

本文地址:https://www.itbaoku.cn/post/1728053.html