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

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

Pandas 將列的子集設(shè)置為相同的字典值

Pandas 將列的子集設(shè)置為相同的字典值

浮云間 2023-10-05 16:43:45
如果我有一個如下所示的數(shù)據(jù)框:df = pd.DataFrame({'A': [1,1,1,2,2,2], 'B': [4,5,6,7,8,9]})df['C'] = None   A  B     C0  1  4  None1  1  5  None2  1  6  None3  2  7  None4  2  8  None5  2  9  None如何將 的子集設(shè)置C為相同的字典值?例如,C為所有行設(shè)置A==1到哪里{'example': 5}?這似乎不起作用:df.loc[df['A']==1, 'C'] = {'example': 5}
查看完整描述

2 回答

?
阿波羅的戰(zhàn)車

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

np.where在這種情況下你可以使用:


df['C'] = np.where(df['A']==1, {'example': 5}, df['C'])

輸出:


   A  B               C

0  1  4  {'example': 5}

1  1  5  {'example': 5}

2  1  6  {'example': 5}

3  2  7             NaN

4  2  8             NaN

5  2  9             NaN

由于更新{'example': 5}是一個可迭代的對象,當(dāng)您將其分配給列時,Pandas 會嘗試展開它,因此如果您直接這樣做,則會出現(xiàn)長度不匹配錯誤。要將整個列分配給該字典,您需要將其包裝在另一個具有相同長度的迭代中df:


df['C'] = [{'example':5} for _ in df.index]

輸出:


   A  B               C

0  1  4  {'example': 5}

1  1  5  {'example': 5}

2  1  6  {'example': 5}

3  2  7  {'example': 5}

4  2  8  {'example': 5}

5  2  9  {'example': 5}

也就是說,除非確實有必要,否則應(yīng)盡可能避免 Pandas 數(shù)據(jù)框中的復(fù)雜對象。


更新 2:根據(jù) BEN 的評論,也反映在更新中


df['C'] = np.where(df['A']==1, {'example': 5}, df['C'])

可能會將同一對象復(fù)制{'example':5}到所有有效行,這可能不是預(yù)期的行為。所以對于這樣的事情:


df['C'] = [{'example':5} if a==1 else c for a,c in zip(df['A'], df['C'])]

將為各個行創(chuàng)建不同的副本。{'example':5'}


查看完整回答
反對 回復(fù) 2023-10-05
?
慕絲7291255

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

您可以使用np.where:


df['C'] = np.where(df['A']==1, {'example': 5}, df['C'])

print(df)

印刷:


   A  B               C

0  1  4  {'example': 5}

1  1  5  {'example': 5}

2  1  6  {'example': 5}

3  2  7            None

4  2  8            None

5  2  9            None


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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