0

我需要确定数据框中的哪些列是小数,哪些是字符串。
使用 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

在此处输入图像描述

我正在使用下面的代码来知道哪些是小数,但是对于如此基本的东西,必须有一种更 Pythonic 的方式。它是什么?

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

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

在此处输入图像描述

4

1 回答 1

2

使用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...
于 2020-04-09T09:51:52.853 回答