【Python】pandas模塊中更改Series的數據類型

今天我們主要解決以下實際問題:一份黑名單數據存儲在excel中,由於數據量龐大,現需要通過pandas找到某一列的重複數據,處理後再存入到excel中。
pandas 是基於NumPy 的一種工具,該工具是爲了解決數據分析任務而創建的,主要數據結構爲兩個類:
DataFrame: 可以理解爲表格,類似於Excel的表格 pandas.core.frame.DataFrame
Series: 表示單列。DataFrame包含多個列,即多個Series,每個Series都有名稱。pandas.core.series.Series

Pandas所支持的數據類型(dtype): 
1. float (float64)
2. int (int64,uint64)
3. bool 
4. datetime64[ns]  (2013-01-02)
5. datetime64[ns, tz] 
6. timedelta[ns] 
7. category 
8. object (字符串)
默認的數據類型是int64,float64

以下是原始的excel文件

先查看文件中Series每一列的數據類型

import pandas as pd

# 更改數據類型
def change_data_type():
    print(excel_df.dtypes)

if __name__ == '__main__':
    excel_df = pd.read_excel('E:\zenglingwei\\test\\5.xlsx')
    change_data_type()

我們發現blacklistValue默認是int類型,但我們知道身份證18位,再次存入excel中時後面幾位會變成0,所以我們需要對這列進行數據類型轉換。主要有兩種思路,一種是讀取excel時轉換,另外一種是讀取後轉換。

一、讀取時全部轉換爲字符串,dtype='object'或者dtype='str'

import pandas as pd

# 更改數據類型
def change_data_type():
    print(excel_df.dtypes)

if __name__ == '__main__':
    excel_df = pd.read_excel('E:\zenglingwei\\test\\5.xlsx',dtype='object')  # dtype='str'
    change_data_type()

二、讀取時指定列轉換爲字符串,object或者str

# 更改數據類型
def change_data_type():
    print(excel_df.dtypes)

if __name__ == '__main__':
    excel_df = pd.read_excel('E:\zenglingwei\\test\\5.xlsx',dtype = {'blacklistValue' : object,'priority':str})  # dtype='str'
    change_data_type()

三、讀取後轉換爲字符串: astype(str),不可以使用astype(object)-->存入到excel時還是int類型。

import pandas as pd

# 更改數據類型
def change_data_type():
    excel_df[['blacklistValue','priority']] = excel_df[['blacklistValue','priority']].astype(str)
    print(excel_df.dtypes)
    excel_df.to_excel('excel_to_python.xls',sheet_name='sheet', index=False)

if __name__ == '__main__':
    excel_df = pd.read_excel('E:\zenglingwei\\test\\5.xlsx')  # dtype='str'
    change_data_type()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章