我使用的是D類指定每個列的數據類型讀一堆CSV文件大熊貓遺漏值:手柄採用D型讀取文件
dict_tpye = {"columns_1":"int","column_2":"str"}
pd.read_csv(path,dtype=dict_tpye)
我與做面臨的問題這使得非浮點值的列有缺失的行,這會導致上升和錯誤。我該如何處理?
我想在這種情況下使用默認值,例如數字值爲0,名稱爲空字符串。
我使用的是D類指定每個列的數據類型讀一堆CSV文件大熊貓遺漏值:手柄採用D型讀取文件
dict_tpye = {"columns_1":"int","column_2":"str"}
pd.read_csv(path,dtype=dict_tpye)
我與做面臨的問題這使得非浮點值的列有缺失的行,這會導致上升和錯誤。我該如何處理?
我想在這種情況下使用默認值,例如數字值爲0,名稱爲空字符串。
考慮變換器參數,它使用一個字典,一個用戶定義的函數來進口列的映射結果。用戶定義的方法下方使用內置的isdigit()
,如果字符串中的所有字符都是數字,則返回True
;如果至少有一個字符不是數字,則返回False
;和isalpha()
作爲字符串對應。根據需要進行調整,特別是在字符串中,因爲您可能允許在其內容中輸入數字:
import pandas as pd
cleanFloat = lambda x: float(x if x.isdigit() else 0)
cleanString = lambda x: str(x if x.isalpha() else '')
dict_convert = {1:cleanFloat, 2:cleanString,}
dict_type = {"columns_1":"int","column_2":"str"}
df = pd.read_csv('Input.csv', converters=dict_convert, dtype=dict_type)
填充缺少w/a佔位符的一種方法是在將數據讀入DataFrame後執行填充。像這樣
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
# csv data with missing data in each of the 2 columns
csv_data = """number,colour
3,blue
12,
2,
2,red
,yellow
6,yellow
14,purple
4,green
18,green
11,orange"""
df = pd.read_csv(pd.io.parsers.StringIO(csv_data))
df.number = df.number.fillna(-999) # fill missing numbers w/ -999
df.colour = df.colour.fillna('UNK') # fill missing categorical w/ UNK
print df
# In [1]: run test.py
# number colour
# 0 3.0 blue
# 1 12.0 UNK
# 2 2.0 UNK
# 3 2.0 red
# 4 -999.0 yellow
# 5 6.0 yellow
# 6 14.0 purple
# 7 4.0 green
# 8 18.0 green
# 9 11.0 orange
'NaN'只能用float dtype表示,所以您想要什麼?你只是說明你有問題而沒有說明你的願望。您可以替換這些缺失的值或將其刪除 – EdChum
@EdChum我想爲這種情況使用默認值,例如數字值爲0,名稱爲空字符串。 –