Преобразование списка с некоторыми вложенными элементами списка и кортежами в фрейм данных - PullRequest
0 голосов
/ 31 января 2020

Список, который я хочу преобразовать в фрейм данных, хранит различные типы данных в каждой ячейке:

[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

1 Ответ

0 голосов
/ 31 января 2020

Iiu c, вы можете создать желаемый результат из вашего 3-столбцового фрейма данных в соответствии с ответом Jezrael на аналогичный вопрос здесь: { ссылка }

В вашем случае:

df[['PrimaryColorsRGB','PrimaryColorsHex']] = pd.DataFrame(df.PrimaryColors.values.tolist(), index= df.index)

То же самое с вашим столбцом вторичных цветов.

Однако в вашем случае вы по-прежнему получаете записи столбцов, которые представляют собой списки, содержащие только один элемент, кортеж в одном столбце и строку в другой.

Вы могли бы решить эту проблему как

df.PrimaryColorsRGB = df.PrimaryColorsRGB.str[0]
df.PrimaryColorsHex = df.PrimaryColorsHex.str[0]

Опять то же самое со столбцами вторичных цветов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...