Dataframe赋值失败,特殊情况

        今天在处理工作数据时遇到了dataframe赋值失败的情况,情况比较特殊有必要发出来分享一下!

        首先,我是需要将日期“2024-06-25 00:00:00”这样一个timestamp格式的数据转化为指定格式的字符串(“20240625”)。我在许多博客中寻找了timestamp转str的方法,但是都很奇怪,无论我怎么赋值,我在print type时还是timestamp不是我想要的字符串。

for i in range(len(data_b1)):
    #将timestamp转化为datetime格式
    date_time = pd.to_datetime(data_b1.loc[i, '客户下单日期'], unit='s')
    
    #将datetime转化为格式化后的字符串
    str_time = date_time.strftime('%Y%m%d')

    #将字符串赋值给原数据
    data_b1.loc[i, '客户下单日期'] = str_time 
   
    print(data_b1.loc[i, '客户下单日期'],type(data_b1.loc[i,'客户下单日期']))

        然而上述代码结果始终输出的是:

        2024-06-25 00:00:00 <class 'pandas._libs.tslibs.timestamps.Timestamp'>

        这里我就很费解,因为我需要字符串后续用于拼接。解决上述问题的方式很简单,就是在赋值字符串前,先赋值一次int类型的数据。

        修改后代码:

for i in range(len(data_b1)):

    #将timestamp转化为datetime格式
    date_time = pd.to_datetime(data_b1.loc[i, '客户下单日期'], unit='s')
    
    #将datetime转化为格式化后的字符串
    str_time = date_time.strftime('%Y%m%d')

    #将int型数据赋值给原数据
    data_b1.loc[i, '客户下单日期'] = 0 

    #将字符串赋值给原数据
    data_b1.loc[i, '客户下单日期'] = str_time 
   
    print(data_b1.loc[i, '客户下单日期'],type(data_b1.loc[i,'客户下单日期']))

        此时结果输出:

        20240625 <class 'str'>

        问题完美解决!所以我在这初步认为的原因是,我在一开始读取数据放入dataframe的时候,每个单元格的格式也全都保存在dataframe之中。当我填入符合Timestamp格式的字符串时,会被再次转回Timestamp格式,因此在此之前先赋值int型数据改变单元格格式,后续再赋值字符串就不会有问题了!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值