lizy169 发表于 2022-7-25 15:16

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

有一组数据:data
在列‘time'转字符串的时候出错,
不知道啥原因,我怀疑是转DataFrame的方法不对,或者是原始数据有问题,不知道怎么解决
请大神指点
print(data)
# 控制台输出为:
# ), OrderedDict([('A', 1), ('B', 768), ('time', '13:21:05.208')])]

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

df['time1'] = str(df['time'])# 增加一列‘time1'为字符串格式
print(df)
# 控制台输出为:
#    AB    time                                    servertime1
# 002753 13:20:59.550    13:20:59.550\n1    13:21:05.208\nName: se...
# 1176813: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

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)

lizy169 发表于 2022-7-25 15:39

用遍历方式查看‘data'中原始数据的属性,
’time'为
13:20:59.550
<class 'str'>
    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'] 是一个Series
是没有办法用 str 直接转换的
复制也不能用单纯的等号:

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

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()
方法提取

catalyst 发表于 2022-7-25 16:23

试试先转成datetime
df['time1'] = pd.to_datetime(df['time1'])
df['time1'] = df['time1'].astype(np.int64)

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
01658761196468000000
11658761198808000000

lizy169 发表于 2022-7-25 16:43

pzx521521 发表于 2022-7-25 15:16
data = [{'A': 0, 'B': 2753 , 'time': '13:20:59.550'},
      {'A': 1,'B': ...

结果正是我需要,谢谢大神!!
我要好好研究一下大神的replace
页: [1]
查看完整版本: 求助大神python数据转换的问题