将包含一些嵌套列表元素和元组的列表转换为数据帧

2024-06-26 14:14:31 发布

您现在位置: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

Tags: 数据in元素dataframedfexample格式type
1条回答
网友
1楼 · 发布于 2024-06-26 14:14:31

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]

同样,次颜色列也是如此

相关问题 更多 >