如何将多个值存入pandas DataFrame的单个单元格中
问题原因
你原来的代码存在两个问题:
- 使用
zip(lst, fold)拼接两个列表时,fold仅包含1个元素,zip会以最短的列表长度为准,最终仅生成1组配对数据,因此DataFrame只有1行 - 你是把
lst的每个元素单独作为一行的Accuracy值传入,自然无法实现多个值存入同一个单元格的需求
解决方案
方案1:单元格存储列表类型数据
如果后续需要直接读取单元格内的单个准确率值,直接把整个lst作为单个元素传入对应列即可,代码如下:
import pandas as pd import numpy as np # 声明列表 lst = ['accuracy score: 0.550', 'accuracy score: 0.700', 'accuracy score: 0.730', 'accuracy score: 0.730'] fold = ['10'] # 构造DataFrame,外层列表长度对应行数,内层内容为单个单元格的值 df = pd.DataFrame({ 'Accuracy': [lst], 'Folds': fold }) df.head()
此时Accuracy列的单元格内容是包含4个元素的完整列表,可通过df.loc[0, 'Accuracy']直接读取所有准确率值。
方案2:单元格存储拼接后的字符串
如果需要直接在表格显示时看到所有准确率,可先把列表拼接为带换行(或自定义分隔符)的字符串再传入:
import pandas as pd import numpy as np # 声明列表 lst = ['accuracy score: 0.550', 'accuracy score: 0.700', 'accuracy score: 0.730', 'accuracy score: 0.730'] fold = ['10'] # 用换行符拼接所有准确率,也可替换为逗号等其他分隔符 acc_content = '\n'.join(lst) df = pd.DataFrame({ 'Accuracy': [acc_content], 'Folds': fold }) df.head()
此时Accuracy列的单元格内会分行显示4个准确率值,查看更直观。
内容的提问来源于stack exchange,提问作者user3046211
相关产品推荐
相关产品推荐

