数据类型转换
基本数据类型转换
转换方向 | 转换函数 | 说明 |
---|---|---|
string->int |
int(str_value) |
将字符串str_value 转成一个整数,str_value 也可为long/float
|
num->string |
str(num_value) |
将一个数(int/long/float )num_value 转成字符串 |
x->float |
float(x) |
将x 转换为一个浮点数 |
x->long |
long(x) |
将x 转换为一个长整数 |
s->tuple |
tuple(s) |
将序列s 转化成元组tuple
|
s->list |
list(s) |
将序列s 转化成列表list
|
s->set |
set(s) |
将序列s 转化成可变集合 set
|
char->num |
ord(c) |
将一个字符转化成其整数值(ASCII码值) |
num->char |
chr(c) |
将一个整数(ASCII码值)转化成其对应的字符 |
num->hex |
hex(x) |
将一个整数值转化为其对应的十六进制字符串 |
num->oct |
oct(x) |
将一个整数值转化成其对应的八进制字符串 |
特殊转换方法
- 将
list
中的字符串全部转化成数值(list
中仅包含可以转化成数值的字符串)
list(map(int, a))
a = ['123', '432', '31']
b = ['12.43', '54.6754', '12.453']
c = list(map(int, a))
d = list(map(float, a))
print(c)
print(d)
# 运行结果
[123, 432, 31]
[12.43, 54.6754, 12.453]
- 将
list
中的数值全部转化成字符串(list
中可以包含一切能转成字符串的对象)
list(map(str, a))
e = [12.43, 54.6754, 12.453, '123']
f = list(map(str, e))
print(f)
# 运行结果
['12.43', '54.6754', '12.453', '123']
数值 nan 的处理
判断一个值是否是 nan
- 使用nunpy进行判断
import numpy as np
#若要判断变量Number是不是nan
np.isnan(number)
- 使用math
import math
math.isnan(number)
- 自己定义判别函数
# 自己定义一个判断nan的函数
def isNan(num):
return num != num
示例
import math
import numpy as np
a = float('nan')
b = 10
# 自己定义一个判断nan的函数
def isNan(num):
return num != num
print("a is {}".format(a))
print("b is {}".format(b))
print("{} --> {} is nan: {}".format('isNan', a, isNan(a)))
print("{} --> {} is nan: {}".format('isNan', b, isNan(b)))
print("{} --> {} is nan: {}".format('math', a, math.isnan(a)))
print("{} --> {} is nan: {}".format('math', b, math.isnan(b)))
print("{} --> {} is nan: {}".format('numpy', a, np.isnan(a)))
print("{} --> {} is nan: {}".format('numpy', b, np.isnan(b)))
# 输出
a is nan
b is 10
isNan --> nan is nan: True
isNan --> 10 is nan: False
math --> nan is nan: True
math --> 10 is nan: False
numpy --> nan is nan: True
numpy --> 10 is nan: False
nan 转化成数值
- 利用numpy的
nan_to_num
函数实现:
a = float('nan')
b = 10
print(np.nan_to_num(a, nan=100))
print(np.nan_to_num(a))
print(np.nan_to_num(b))
# 输出
100.0
0.0
10
- 根据nan判断函数,自己写转换函数
日期处理
使用datetime
模块处理日期:
>>> import datetime
>>> d1 = datetime.datetime(2018,10,31) # 第一个日期
>>> d2 = datetime.datetime(2019,2,2) # 第二个日期
>>> interval = d2 - d1 # 两日期差距
>>> interval.days # 具体的天数
94
>>> interval.seconds # 具体的秒数
0
datetime.datetime()
常用模块有:
>>> filter(lambda x: not x.startswith("_"), dir(interval))
['days', 'max', 'microseconds', 'min', 'resolution', 'seconds', 'total_seconds']
如果是两个日期还是带时,分,秒的话,同样可以算出两者的相距天数及秒数.
>>> import datetime
>>> d1 = datetime.datetime(2018,10,31,10,30,00)
>>> d2 = datetime.datetime(2018,11,1,10,40,30)
>>> interval = d2 - d1
>>> interval # 第一项是天数,相距1天
datetime.timedelta(1, 630)
>>> interval.days # 具体天数
1
>>> interval.seconds # 额外秒数
630
>>> interval.total_seconds() # 相差总秒数
87030.0