吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 996|回复: 8
收起左侧

[求助] 求助大神python数据转换的问题

[复制链接]
lizy169 发表于 2022-7-25 15:16
25吾爱币
有一组数据:data
在列‘time'转字符串的时候出错,
不知道啥原因,我怀疑是转DataFrame的方法不对,或者是原始数据有问题,不知道怎么解决
请大神指点
[Python] 纯文本查看 复制代码
print(data)
# 控制台输出为:
# [OrderedDict([('A', 0), ('B', 2753), ('time', '13:20:59.550')]), OrderedDict([('A', 1), ('B', 768), ('time', '13:21:05.208')])]

df = pd.DataFrame(data)  # 转换成DataFrame格式
print(df)
# 控制台输出为:
#     A  B    time
# 0   0  2753 13:20:59.550
# 1   1  768  13:21:05.208

df['time1'] = str(df['time'])  # 增加一列‘time1'为字符串格式
print(df)
# 控制台输出为:
#    A  B    time                                      servertime1
# 0  0  2753 13:20:59.550    13:20:59.550\n1    13:21:05.208\nName: se...
# 1  1  768  13:21:05.208    13:20:59.550\n1    13:21:05.208\nName: se...

print(df.dtypes)
# 控制台输出为:
# A        int64
# B        int64
# time     object
# time1    object
# dtype: object

print(type(df))
# 控制台输出为:
# <class 'pandas.core.frame.DataFrame'>

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

pzx521521 发表于 2022-7-25 15:16
[Python] 纯文本查看 复制代码
data = [{'A': 0, 'B': 2753 , 'time': '13:20:59.550'},
        {'A': 1,'B': 768,'time': '13:21:05.208'}]
print(data)
df = pd.DataFrame(data)
df['time1'] = df.apply(lambda x: int(str(x.time).replace(':', '').replace('.', '')), axis=1)

免费评分

参与人数 1热心值 +1 收起 理由
lizy169 + 1 谢谢@Thanks!

查看全部评分

 楼主| lizy169 发表于 2022-7-25 15:39
用遍历方式查看‘data'中原始数据的属性,
’time'为
13:20:59.550
<class 'str'>
[Python] 纯文本查看 复制代码
    for dice in data:
        for i in dice.values():
            print(i)
            print(type(i))
        exit()
pzx521521 发表于 2022-7-25 15:54
本帖最后由 pzx521521 于 2022-7-25 15:56 编辑

列‘time' 已经是str 了
所以没有必要加列‘time1'

df['time1'] 是一个[size=0.85em]Series
是没有办法用 str 直接转换的
复制也不能用单纯的等号:

应该用copy
https://pandas.pydata.org/pandas ... ndas.DataFrame.copy
如果确实要数据转换 用:
https://pandas.pydata.org/pandas ... convert_dtypes.html

免费评分

参与人数 1吾爱币 +1 收起 理由
lizy169 + 1 谢谢@Thanks!

查看全部评分

 楼主| lizy169 发表于 2022-7-25 16:00
pzx521521 发表于 2022-7-25 15:54
列‘time' 已经是str 了
所以没有必要加列‘time1'

我主要的目的是将time列(13:20:59.550)转成(132059550)这样的格式,方面下一步计算时间差,一直没有找到能转的方法
PncB2INYyoKw0l9 发表于 2022-7-25 16:04
object类型已经是str类型了
可尝试用
pd.Series.str.extract()
方法提取

免费评分

参与人数 1热心值 +1 收起 理由
lizy169 + 1 谢谢@Thanks!

查看全部评分

catalyst 发表于 2022-7-25 16:23
试试先转成datetime
df['time1'] = pd.to_datetime(df['time1'])
df['time1'] = df['time1'].astype(np.int64)

免费评分

参与人数 1吾爱币 +1 收起 理由
lizy169 + 1 谢谢@Thanks!

查看全部评分

 楼主| lizy169 发表于 2022-7-25 16:33
catalyst 发表于 2022-7-25 16:23
试试先转成datetime
df['time1'] = pd.to_datetime(df['time1'])
df['time1'] = df['time1'].astype(np. ...

试了,好像不行
     time1
0  1658761196468000000
1  1658761198808000000
 楼主| lizy169 发表于 2022-7-25 16:43
pzx521521 发表于 2022-7-25 15:16
[mw_shl_code=python,true]data = [{'A': 0, 'B': 2753 , 'time': '13:20:59.550'},
        {'A': 1,'B': ...

结果正是我需要,谢谢大神!!
我要好好研究一下大神的replace
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 09:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表