如何让Pandas tolist()返回不同数据类型(int与double)?
解决DataFrame转列表时单独指定列类型的问题
这个问题我碰到过好几次了,其实不用纠结astype()同时作用两列的限制,我们可以针对性地单独处理每一列的类型,给你几个实用的方案:
方案1:逐行提取并单独转换类型(最直观)
直接定位到目标行,分别对date列做int转换,LTP保持原类型,再组合成列表:
# 提取第一行数据 target_row = df.iloc[0] # 分别处理类型后组合成你要的列表格式 result = [[int(target_row['date']), target_row['LTP']]]
这样得到的结果就是[[1472688000000, -0.7222783810000001]],完美符合你的需求。
方案2:用apply逐行处理(适合批量多行)
如果需要处理多行数据,用apply配合lambda函数可以批量完成列类型的单独转换:
# 处理前N行(这里是前1行),axis=1表示按行处理 result = df[['date','LTP']].iloc[0:1].apply( lambda row: [int(row['date']), row['LTP']], axis=1 ).tolist()
这个方法的好处是不用修改原DataFrame,直接生成目标格式的列表。
方案3:临时修改单列类型(适合需要重复使用转换后数据的场景)
如果你之后还需要用到转换后的date列数据,可以先创建一个临时DataFrame,单独修改date的类型,再转列表:
# 复制目标列到临时DataFrame,避免修改原数据 temp_df = df[['date','LTP']].copy() # 只修改date列为int类型 temp_df['date'] = temp_df['date'].astype(int) # 转成列表 result = temp_df.iloc[0:1].values.tolist()
这几个方案都能解决你的问题,根据自己的实际场景选就行~
内容的提问来源于stack exchange,提问作者saias
相关产品推荐
相关产品推荐

