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$