Фильтрация элементов столбца данных по разным типам (например, INT и STR для создания целого столбца и объекта) - PullRequest
0 голосов
/ 10 марта 2020

У меня есть столбец, который в настоящее время имеет тип d объекта. Это связано с тем, что 0,2% элементов в этом столбце являются строками, а остальные 99,8% являются целыми числами. Как я могу отфильтровать столбец dataframe по dtype?

(я обнаружил, что df.select_dtypes (include = 'bool') будет возвращать любой столбец в df, который имеет bool, но моя проблема в том, что один столбец идентифицируется как dtype = Object, потому что он состоит из INT и STR.)

df = pd.DataFrame([[1], [2], ['three']], columns=['A'])

1 Ответ

0 голосов
/ 10 марта 2020

Если есть смешанные числа c и возможны строки, проверьте type s - по isinstance:

m = df['A'].apply(lambda x: isinstance(x, int))
print (m)
0     True
1     True
2    False
Name: A, dtype: bool

или по type:

m = df['A'].apply(type) == int
print (m)
0     True
1     True
2    False
Name: A, dtype: bool

Если есть все строки - также нумерация c, используйте to_numeric с преобразованием в цифру c, если это возможно, в противном случае пропустите значения, поэтому возможна проверка по Series.notna:

df['A'] = pd.to_numeric(df['A'], errors='coerce')
m = df['A'].notna()

И последний фильтр по boolean indexing:

df = df[m]
print (df)
   A
0  1
1  2
...