Я ищу хороший способ решить следующую проблему. Мое текущее исправление не особенно чистое, и я надеюсь извлечь уроки из вашего понимания.
Предположим, у меня есть Panda DataFrame, записи которого выглядят так:
>>> df=pd.DataFrame(index=[1,2,3],columns=['Color','Texture','IsGlass'])
>>> df['Color']=[np.nan,['Red','Blue'],['Blue', 'Green', 'Purple']]
>>> df['Texture']=[['Rough'],np.nan,['Silky', 'Shiny', 'Fuzzy']]
>>> df['IsGlass']=[1,0,1]
>>> df
Color Texture IsGlass
1 NaN ['Rough'] 1
2 ['Red', 'Blue'] NaN 0
3 ['Blue', 'Green', 'Purple'] ['Silky','Shiny','Fuzzy'] 1
Таким образом, каждое наблюдение в индексе соответствует чему-то, что я измерил в отношении его цвета, текстуры и того, стекло это или нет. Что я хотел бы сделать, так это превратить это в новый «индикатор» DataFrame, создав столбец для каждого наблюдаемого значения и изменив соответствующую запись на единицу, если я ее наблюдал, и NaN, если у меня нет информации.
>>> df
Red Blue Green Purple Rough Silky Shiny Fuzzy Is Glass
1 Nan Nan Nan Nan 1 NaN Nan Nan 1
2 1 1 Nan Nan Nan Nan Nan Nan 0
3 Nan 1 1 1 Nan 1 1 1 1
У меня есть решение, которое перебирает каждый столбец, просматривает его значения и через серию Try/Excepts для значений, отличных от Nan, разбивает списки, создает новый столбец и т. д. и объединяет.
Это мой первый пост в StackOverflow — надеюсь, этот пост соответствует правилам публикации. Спасибо.