datetime数据类型_数据类型几种常见的转换方式

  • Post author:
  • Post category:其他




df转换为dict


# Orient str {'dict','list','series','split','records,'index'}
# 确定字典值的类型。
# 'dict'(默认):像{column-> {index-> value}}这样的dict
# 'list':类似{column-> [values]}的字典
# 'series':类似{column-> Series(values)}的字典
# 'split':类似{'index'-> [index],'columns'-> [columns],'data'-> [values]}的字典
# 'records':类似于[{column-> value},…,{column-> value}]的列表
# 'index':类似{index-> {column-> value}}的字典
# 允许缩写。s表示序列,而sp 表示split。

data = {'玩具':['车','飞机','轮船'], '数量':[3,2,5], '价格':[100,90,80]} 
df = DataFrame(data)

print(df.to_dict())
print('-'*30)
print(df.to_dict(orient='records'))
{'玩具': {0: '车', 1: '飞机', 2: '轮船'}, '数量': {0: 3, 1: 2, 2: 5}, '价格': {0: 100, 1: 90, 2: 80}}
------------------------------
[{'玩具': '车', '数量': 3, '价格': 100}, {'玩具': '飞机', '数量': 2, '价格': 90}, {'玩具': '轮船', '数量': 5, '价格': 80}]



ndarray多维数组的数据类型转换


# 将ndarray多维数组转化为字符串类型
import numpy as np
arr = np.arange(6)
arr
array([0, 1, 2, 3, 4, 5])
arr.dtype
dtype('int64')
# 转化为 string 类型
str_arr = arr.astype('string_')
str_arr
array([b'0', b'1', b'2', b'3', b'4', b'5'], dtype='|S21')
# 转化为 float 类型
str_arr = arr.astype(np.float)
str_arr
array([0., 1., 2., 3., 4., 5.])
str_arr.dtype
dtype('float64')



时间格式样式转换


import pandas as pd
# df = pd.DataFrame([pd.date_range('2019/01/01', periods=10), np.arange(10)])

df = pd.DataFrame(pd.date_range('2019/01/01',periods=5), columns=['time'])
df = df.set_index(df['time'])
df

7562e105d728d1a1d7b3d52979450384.png

df.index = df.index.strftime('%b %d %Y %H:%M:%S')
df

c0f708e2cd6c359d2d5105f36805cb06.png



使用pd.to_datetime() 将字符串数据转化为datetime数据类型


# 将字符串转换成Datetime类型,用此方法也可以将df中的某一列(如果同样是字符串类型)转换
datetime_eg = pd.to_datetime(['2018-8-1', '2018-8-2'])
datetime_eg
DatetimeIndex(['2018-08-01', '2018-08-02'], dtype='datetime64[ns]', freq=None)



使用reset_index()将series转换为dataframe数据


df = pd.DataFrame({
    'A':[1,22,3],
    'sex': ['male', 'famle', 'male']
})
df

8d4030e5afc35d8925b39e96e982f7c3.png

group = df.groupby('sex')['A'].count()
group
sex
famle    1
male     2
Name: A, dtype: int64
group = df.groupby('sex')['A'].count().reset_index()
group

432aba10d8209ebe771dfb85fde2ed5d.png



category类型转换成int类型(或者其他类型)


df = pd.DataFrame({
    'A': np.arange(20,30)
})
df['level'] = pd.cut(df['A'], bins=[10,20,25,30], labels=[100, 200, 300]) 
df.dtypes
A           int64
level    category
dtype: object
# 将某一列转换为int类型
df['level'] = df['level'].astype(np.int32)
df.dtypes
A        int64
level    int32
dtype: object



将布尔类型转换为数值(int类型、float类型)


# 将布尔类型转换为数值
data = {'玩具':['车','飞机','轮船'], '数量':[3,2,5], '价格':[100,90,80]} 
df = DataFrame(data)
df.isin({'数量':[2,5]})

38e6309e211d8b1c768c320ec3ba9647.png

df.isin({'数量':[2,5]}) *1

075e72c3791bf26e25d6c6c81ed58fc1.png

972ecac8d1f25560dd2fab882d55e831.png

a9a0ced42f7e5983aebd1b6fafbc290a.png