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
df.index = df.index.strftime('%b %d %Y %H:%M:%S')
df
使用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
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
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]})
df.isin({'数量':[2,5]}) *1