import pandas as pd
df = pd.DataFrame([{'col1':'a', 'col2':'1'}, {'col1':'b', 'col2':'2'}])
print df.dtypes
df['col2'] = df['col2'].astype('int')
print '-----------'
print df.dtypes
df['col2'] = df['col2'].astype('float64')
print '-----------'
print df.dtypes
输出结果:
col1 object
col2 object
col1 object
col2 int32
col1 object
col2 float64
dtype: object
注:data type list
Data type Description
bool_ Boolean (True or False) stored as a byte
int_ Default integer type (same as C long; normally either int64 or int32)
intc Identical to C int (normally int32 or int64)
intp Integer used for indexing (same as C ssize_t; normally either int32 or int64)
int8 Byte (-128 to 127)
int16 Integer (-32768 to 32767)
int32 Integer (-2147483648 to 2147483647)
int64 Integer (-9223372036854775808 to 9223372036854775807)
uint8 Unsigned integer (0 to 255)
uint16 Unsigned integer (0 to 65535)
uint32 Unsigned integer (0 to 4294967295)
uint64 Unsigned integer (0 to 18446744073709551615)
float_ Shorthand for float64.
float16 Half precision float: sign bit, 5 bits exponent, 10 bits mantissa
float32 Single precision float: sign bit, 8 bits exponent, 23 bits mantissa
float64 Double precision float: sign bit, 11 bits exponent, 52 bits mantissa
complex_ Shorthand for complex128.
complex64 Complex number, represented by two 32-bit floats (real and imaginary components)
complex128 Complex number, represented by two 64-bit floats (real and imaginary components)
使用astype实现dataframe字段类型转换# -*- coding: UTF-8 -*-import pandas as pddf = pd.DataFrame([{'col1':'a', 'col2':'1'}, {'col1':'b', 'col2':'2'}])print df.dtypesdf['col2'] = df['col2'].astype('int')print '-
指定多列去重,这是在
dataframe
没有独一无二的
字段
作为PK(主键)时,需要指定多个
字段
一起作为该行的PK,在这种情况下对整体数据进行去重。
Attention:主要用到了drop_duplicates方法,并设置参数subset为多个
字段
名构成的数组。
具体代码如下:
>>>import pandas as pd
>>>data={'state':[1,1,2,2,1,2,2],'pop':['a','b','c','d','b','c','d']}
>>>frame=pd.
DataFrame
(data)
>>>frame
pop state
0 a 1
1 b 1
首先咱们先定义一个str类型的
dataframe
:
student = [["小明","数学","88"],["小红","数学","99"],["小刚","数学","85"]]
df = pd.
DataFrame
(student)
print(df)
那么如何对他的指定列进行数据类型的转换呢??
df[2] = df[2].
astype
('int')
全部代码为:
student = [["小明","数学","88"],["小红","数学","99"],["小刚","数学","85"]]
数据分析过程中最头疼也是工作量最大的部分算是探索和清洗了,探索的目的是了解数据,了解数据背后隐藏的规律,清洗的目的则是为了让干净的数据进入分析或建模的下一个环节。作者将通过三篇文章,详细讲解工作中常规的数据清洗方法,包括数据类型的转换,重复数据的处理,缺失值的处理以及异常数据的识别和处理。这是第一篇文章,主要分享的内容包括,文中涉及到的数据可以至文末查看下载链接:
数据类型的转换...
# -*- coding: UTF-8 -*-
import pandas as pd
df = pd.
DataFrame
([{'col1':'a', 'col2':'1'}, {'col1':'b', 'col2':'2'}])
print df.dtypes
df['col2'] = df['col2'].
astype
('int')
print '-----------'
print df.dtypes
df['col2'] = df['col2'].
astype
('float64')
print '-----------'
print
在进行将多个表的数据合并到一个表后,发现输出到EXCEL表的数据发生错误,数值型数据末尾都变成了0。这是因为excel数据超过11位,自动以科学计数法显示,其最大处理精度为15位,超过15位,以后数字自动变0。找了一些解决方法,发现用.
astype
('数据类型')还是挺方便的。我在输出时,将数值型的数据(int)转化成了字符串(str)。
使用方法:
df.
astype
('数据类型') ...
1
astype
()函数可用于转化dateframe某一列的数据类型
如下将dateframe某列的str类型转为int,注意
astype
()没有replace=True的用法,想要在原数据上修改,要写成如下形式。
注意只有当该列的字符串全是由纯数字构成时才可以这样写,如果混有字母,会报错:ValueError: invalid literal for int() with base 10:
利用int()函数转字符串也类似
参考:https://www.cnblogs.com/h...