語境
我有一個Pandas Series并且正在呼叫.unique() Method以獲得所有獨特的Values。我現在想過濾這個結果,只看到唯一Values的Non-Numeric. 但是,我收到以下錯誤:
錯誤: AttributeError:“float”物件沒有屬性“isnumeric”
代碼
values = data['Column Name'].unique()
non_numeric_values = [value for value in values if not value.isnumeric()] # Error
問題
- 我怎樣才能實作只能選擇那些的
Values目標Non-Numeric? - 請注意, Column 可能有
Object dtype并且Values可能是 型別String。
uj5u.com熱心網友回復:
您可以使用內置的isinstance:
from numbers import Number
import pandas as pd
elements = [1.0, "foo", 2, "bar", 3.0, "baz", 4, "qux"]
df = pd.DataFrame(elements, columns=["column name"])
uniques = df["column name"].unique()
types = [type(x) for x in uniques]
print(types) # [float, str, int, str, float, str, int, str]
uniques_non_numeric = [x for x in uniques if not isinstance(x, Number)]
print(uniques_non_numeric) # ['foo', 'bar', 'baz', 'qux']
或使用 pandas 切換串列理解apply:
df[df["column name"].apply(lambda x : not isinstance(x, Number))]["column name"].unique()
uj5u.com熱心網友回復:
Lets try:
data[data['Column Name'].str.isnumeric()].unique()
如果您有混合型別,請將其強制為 str 然后查詢
data[data['Column Name'].astype(str).str.isnumeric()]
uj5u.com熱心網友回復:
下面的解決方案可以幫助我們嘗試轉換為 float 如果它轉換然后我們跳過并休息我們添加到陣列的所有內容
output = []
for x in actors['actor'].unique():
try:
float(str(x).strip())
except:
output.append(x)
uj5u.com熱心網友回復:
import pandas as pd
import numpy as np
data = np.array(['a', 'e', 'i', 'o', 'u',1.2,3.5,1,5])
df = pd.DataFrame(data, columns=['col1'])
values = df['col1'].unique()
def isfloat(num):
try:
float(num)
return True
except ValueError:
return False
list1 = []
for item in values:
if not (item.isdigit() or isfloat(item)):
list1.append(item)
print(list1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/516049.html
