Отличительные guish десятичные и строковые столбцы в pandas кадре данных - PullRequest
0 голосов
/ 09 апреля 2020

Мне нужно определить, какие столбцы в кадре данных являются десятичными, а какие - строками.
Использование df.dtypes дает «объект» для обоих типов столбцов:

import pandas as pd
import decimal 

data = {'dec1': [1.1, 1.2],'str1': ["a","b"]}
df = pd.DataFrame(data)

df.dec1 = df.dec1.apply(lambda x: decimal.Decimal(x))

df.dtypes

enter image description here

Я использую следующий код, чтобы узнать, какие десятичные дроби, но для чего-то такого, основанного на c, должен быть способ pythoni c. Что это?

actual_col_types = df.iloc[0].apply(type)

df_decimals = df.loc[:,actual_col_types==decimal.Decimal]

enter image description here

1 Ответ

1 голос
/ 09 апреля 2020

Используйте isinstance, что должно быть более предпочтительным, например, тип, ссылка :

mask = df.iloc[0].map(lambda x: isinstance(x, decimal.Decimal))
df_decimals = df.loc[:,mask]
print (df_decimals)
                                                dec1
0  1.10000000000000008881784197001252323389053344...
1  1.19999999999999995559107901499373838305473327...
...