2 回答
![?](http://img1.sycdn.imooc.com/5458631e0001ffd402200220-100-100.jpg)
TA贡献2039条经验 获得超7个赞
让我们尝试str.get_dummies
创建虚拟指标变量,然后join
使用原始数据帧:
df[['old']].join(df['old'].str.get_dummies().astype(bool).add_suffix('bool'))
old cloudybool sunnybool
0 cloudy True False
1 sunny False True
![?](http://img1.sycdn.imooc.com/5333a0aa000121d702000200-100-100.jpg)
TA贡献1796条经验 获得超4个赞
我知道该get_dummies方法是为此构建的,但另一种方法是从列表理解创建一系列,将列中的天气值old与bool列名称进行比较(假设它们已经存在,如您的示例中所示)。然后,将其隐藏到列表中,准备将其添加到数据框中。
您的名称没有直接匹配,因此我省略了最后两个字符,例如cloudywill beclou和sunnywill be sun。我认为任何天气的后缀都不可能超过 2 个字符?这也是为什么它不像get_dummies. 您还可以使列名称与您的值匹配,例如cloudybool和sunnybool:
s = df.apply(lambda x: [x['old'][:-2] in col for col in df.columns[1:]], axis=1).to_list()
df1 = pd.concat([df['old'],pd.DataFrame(s, columns=df.columns[1:])], axis=1)
df1
Out[1]:
old cloudbool sunbool
0 cloudy True False
1 sunny False True
添加回答
举报