我正在寻找解决以下问题的好方法。我当前的修复不是特别干净,我希望从您的见解中学习。
假设我有一个 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,方法是为每个观察到的值创建一列,如果我观察到它,则将相应的条目更改为 1,如果我没有信息,则将相应的条目更改为 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
我有一个解决方案,它循环遍历每一列,查看其值,并通过一系列非 Nan 值的 Try/Excepts 拆分列表,创建一个新列等,然后连接。
这是我在 StackOverflow 上发表的第一篇文章 - 我希望这篇文章符合发布指南。谢谢。