簡體   English   中英

在 Pandas 中過濾混合 dtype 列會導致錯誤

[英]Filtering mixed dtype column in pandas results in error

我正在清理一個有一些違規行為的數據文件。 我有一個像這樣的值列表:

import numpy as np
import pandas as pd
dataset = pd.DataFrame.from_dict({'data':['1','2','3','Third Street',np.nan]})

我的目標是過濾掉“第三街”列,同時保留 NaN 值。

dataset['data'].astype(int)
ValueError: invalid literal for int() with base 10: 'Third Street'

這很有意義,因為最后一個值無法轉換為整數。

嘗試過濾非數字列過濾掉 NaN 值,我想保留它:

digitFilter = dataset['data'].str.isdigit()
dataset[digitFilter]
ValueError: cannot index with vector containing NA / NaN values

我也嘗試過堆疊過濾器,但 NaN 似乎也妨礙了那里。 當然有一種簡單的方法可以做到這一點,我忽略了。 欣賞任何人可以提供的任何智慧。

您可以使用| (OR 運算符)檢查值是數字還是NaN

digitFilter = (dataset['data'].str.isdigit()) | (dataset['data'] == 'NaN')
dataset[digitFilter]

也許你可以寫一個函數來嘗試,除了你在上面做的事情?

那就跟着把這個功能應用到第三街列吧!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM