2 回答

TA貢獻2039條經驗 獲得超8個贊
讓我們嘗試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

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
添加回答
舉報