Pandas 類型轉換astype()的實現

Python中和Pandas中數據類型對應關系如下:

  • 果數據是純凈的數據,可以轉化為數字
  • astype基本也就是兩種用作,數字轉化為單純字符串,單純數字的字符串轉化為數字,含有其他的非數字的字符串是不能通過astype進行轉化的。
  • 需要引入其他的方法進行轉化,也就有瞭下面的自定義函數方法

astype()是最常見也是最通用的數據類型轉換方法

import pandas as pd
 
df = pd.DataFrame([['liver','E',89,21,24,64],
                   ['Arry','C',36,37,37,57],
                   ['Ack','A',57,60,18,84],
                   ['Eorge','C',93,96,71,78],
                   ['Oah','D',65,49,61,86]
                  ], 
                   columns = ['name','team','Q1','Q2','Q3','Q4'])
 
res = df.dtypes
 
df.Q1.astype('int32').dtypes # dtype('int32')
df.astype({'Q1':'int32','Q2':'int32'}).dtypes

結果展示

df

res

 擴展

# 以下是一些使用示例:
df.index.astype('int64') # 索引類型轉換
df.astype('int32') # 所有數據轉換為int32
df.astype({'col1':'int32'}) # 指定字段轉指定類型
s.astype('int64')
s.astype('int64',copy = False) # 不與原數據關聯
df['name'].astype('object')
data['Q4'].astype('float')
s.astype('datatime64[ns]') # 轉為時間類型
data['狀態'].astype('bool')

數據類型

df.dtypes會返回每個字段的數據類型及DataFrame整體的類型

如果是Series,需要用s.dtype

import pandas as pd
 
df = pd.DataFrame([['liver','E',89,21,24,64],
                   ['Arry','C',36,37,37,57],
                   ['Ack','A',57,60,18,84],
                   ['Eorge','C',93,96,71,78],
                   ['Oah','D',65,49,61,86]
                  ], 
                   columns = ['name','team','Q1','Q2','Q3','Q4'])
df.dtypes
 
s = pd.Series(['One','Two','Three'])
s.dtype

結果展示

df

s

當數據的格式不具備轉換為目標類型的條件時,需要先對數據進行處理

例如“89.3%”是一個字符串,要轉換為數字,要先去掉百分號:

# 將"89.3%"這樣的文本轉為浮點數
data.rate.apply(lambda x:x.replace('%','')).astype('float')/100

加載數據時可以指定數據各列的類型:

import pandas as pd
 
# 對所有字段指定統一類型
df = pd.DataFrame(data, dtype = 'float32')
# 對每個字段分別指定
df = pd.read_excel(data, dtype = {'team':'string','Q1':'int32'})

到此這篇關於Pandas 類型轉換astype()的實現的文章就介紹到這瞭,更多相關Pandas 類型轉換astype()內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: