第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用列表根據(jù)不同的列值更改多個布爾列的值

使用列表根據(jù)不同的列值更改多個布爾列的值

躍然一笑 2023-10-18 21:29:34
有一個值列表weather = ['cloudy', 'sunny']我有一個帶有舊列“天氣”的數(shù)據(jù)框。我們切換到 2 個帶有布爾值的新列,因此需要考慮所有舊列。現(xiàn)在這是我的數(shù)據(jù)框:[In]data = [['cloudy', False, False], ['sunny', False, False]]df = pd.DataFrame(data, columns=['old', 'cloudbool', 'sunbool'])df[Out]     old  cloudbool sunbool0   cloudy  False   False1   sunny   False   False期望的輸出:[In]data = [['cloudy', True, False], ['sunny', False, True]]df = pd.DataFrame(data, columns=['old', 'cloudbool', 'sunbool'])[Out]    old   cloudbool sunbool0   cloudy  True    False1   sunny   False   True我知道我可以做類似下面的事情,但我有一個“天氣類型”列表,比 2 長得多。df.loc[df['old'] == 'cloudy', ['cloudbool']] = True我希望我正確地傳達了這一點。謝謝
查看完整描述

2 回答

?
largeQ

TA貢獻2039條經(jīng)驗 獲得超8個贊

讓我們嘗試str.get_dummies創(chuàng)建虛擬指標變量,然后join使用原始數(shù)據(jù)幀:

df[['old']].join(df['old'].str.get_dummies().astype(bool).add_suffix('bool'))

? ? ? old? cloudybool? sunnybool

0? cloudy? ? ? ? True? ? ? False

1? ?sunny? ? ? ?False? ? ? ?True


查看完整回答
反對 回復 2023-10-18
?
SMILET

TA貢獻1796條經(jīng)驗 獲得超4個贊

我知道該get_dummies方法是為此構(gòu)建的,但另一種方法是從列表理解創(chuàng)建一系列,將列中的天氣值old與bool列名稱進行比較(假設它們已經(jīng)存在,如您的示例中所示)。然后,將其隱藏到列表中,準備將其添加到數(shù)據(jù)框中。

您的名稱沒有直接匹配,因此我省略了最后兩個字符,例如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


查看完整回答
反對 回復 2023-10-18
  • 2 回答
  • 0 關(guān)注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號