python - 将包含一些嵌套列表元素和元组的列表转换为数据框
问题描述
我要转换为数据框的列表在每个单元格中存储不同的数据类型:
[In] type(example_list)
[Out] list
[In] type(example_list[0])
[Out] list
[In] type(example_list[0][0])
[Out] str
[In] type(example_list[0][1])
[Out] tuple
[In] type(example_list[0][2])
[Out] tuple
[In] type(example_list[0][1][0])
[Out] list
并且元组元素都具有以下格式:
[In] example_list[0][1]
[Out] ([array([200.85183333, 200.85183333, 200.85183333])], ['#c8c8c8'])
[In] type(example_list[0][1][0])
[Out] list
[In] type(example_list[0][1][1])
[Out] list
当我使用该pd.DataFrame
函数时,我最终得到 3 列,但我想要 5 列(即每个元组元素有 2 列)。
当我运行以下命令时:
df = pd.DataFrame(example_list, columns=['Name','PrimaryColors','SecondaryColors'])
df.to_csv('test.csv', sep=',')
这就是我得到的(仅输出下面的第一行):
E123 ([array([200.85183333, 200.85183333, 200.85183333])], ['#c8c8c8']) ([array([226.9, 226.9, 226.9])], ['#e2e2e2'])
我怎样才能以 5 列而不是 3 列结束,并使数据框遵循以下格式?
Name PrimaryColorRGB PrHEX SecondaryColorsRGB SecHEX
E123 200.85183333, 200.85183333, 200.85183333 #c8c8c8 226.9, 226.9, 226.9 #e2e2e2
解决方案
Iiuc,您可以根据 jezrael 在此处对类似问题的回答从您的 3 列数据框中创建所需的结果:https ://stackoverflow.com/a/35491399/8300135
在你的情况下:
df[['PrimaryColorsRGB','PrimaryColorsHex']] = pd.DataFrame(df.PrimaryColors.values.tolist(), index= df.index)
与您的辅助颜色列相同。
但是,在您的情况下,您仍然会得到列条目,它们是只有一个元素的列表,一列中有一个元组,另一列中有一个字符串。
你可以像这样解决这个问题
df.PrimaryColorsRGB = df.PrimaryColorsRGB.str[0]
df.PrimaryColorsHex = df.PrimaryColorsHex.str[0]
同样,二次色列也是如此。
推荐阅读
- python-3.x - Python多处理数组和SharedMemory之间的区别?
- sequelize.js - Sequelize - 当你有值时如何从相关表中获取 id
- visual-studio-2019 - 复杂的自定义用户管理标识 asp.net core 3.1 带断点运行,不带断点不运行
- django - 将表单数据从 FormView 保存到会话
- python - 无法将两个字典合并为一个字典
- elixir - 长生不老药句法词后跟冒号和波浪形箭头等
- responsive-design - 在给定最小/理想/最大字体大小和最小/当前/最大屏幕宽度的情况下,找到固定字体大小的比例/比率
- java - intellij中奇怪的特殊字符处理
- .net-core - .Net Core 3.5 Blazor 可选的 int 路由参数
- arrays - C - 为什么“地址”运算符返回变量的整数值,而不管变量类型如何?