我有一个带有dtype('int64')
列的数据框。列中的值介于0到10之间。数据帧具有770K行和56列不同类型的数据。当我运行下面的代码时,我得到dtype('int64')
。我本以为结果至少会降到int32
或int16
的水平。这是一个可复制的示例。
import pandas as pd
df = pd.DataFrame([x for x in range(10)]*77000, columns=['recommendation'])
df.dtypes
df.recommendation.apply(lambda x: pd.to_numeric(x, downcast='integer')).dtypes
答案 0 :(得分:4)
apply
方法逐个单元工作,因此无法确定整个列都可以向下转换。
您需要在整列中调用to_numeric
,如Ben在评论中所示:
pd.to_numeric(df.recommendation,downcast='integer')