Python速记

Pandas中指定数据类型

Pandas从excel文件中读取数据时候, 可以使用converter参数指定要使用转换函数

from decimal import Decimal
import pandas as pd

def decimal_from_value(value):
    return Decimal(value)

df = pd.read_csv(filename, converters={'sales': decimal_from_value})

# 还可以使用数字指定需要转换的列, 18-35列
x = dict.fromkey(range(18, 36), decimal_from_value)
df = pd.read_csv(filename, converters=x)

在pandas中如果想一直使用 Decimal类型, 各种运算会收到限制, 直接使用sum()等函数, 会导致运算结果直接变成float类型, 想要保持Decimal类型, 可以使用apply()函数

df[(df.iloc[:, 18:26].apply(lambda x: x.sum(), axis=1) 

另外, Decimal过程中使用除法, 除数如果为0, 会出现InvalidOperation: [<class 'decimal.DivisionUndefined'>]异常, 避免次异常的办法是在运算的过程中判断除数是否为0

df.apply(lambda x: x[34] / x[35] if x[35] != 0 else Decimal('NaN'), axis=1)

$\delta$