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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

當(dāng)列包含`List`而不是`Tuple`時(shí),熊貓比較運(yùn)算符`==`無(wú)法按預(yù)期工作

當(dāng)列包含`List`而不是`Tuple`時(shí),熊貓比較運(yùn)算符`==`無(wú)法按預(yù)期工作

慕姐4208626 2022-10-11 15:10:11
import pandas as pdimport numpy as npdf = pd.DataFrame({'Li':[[1,2],[5,6],[8,9]],'Tu':[(1,2),(5,6),(8,9)]}df       Li      Tu0  [1, 2]  (1, 2)1  [5, 6]  (5, 6)2  [8, 9]  (8, 9)工作正常Tupledf.Tu == (1,2)0     True1    False2    FalseName: Tu, dtype: bool當(dāng)List它給出值錯(cuò)誤時(shí)df.Li == [1,2]ValueError:長(zhǎng)度必須匹配才能進(jìn)行比較
查看完整描述

3 回答

?
蝴蝶不菲

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

問(wèn)題是lists 不可散列,因此有必要比較tuples:


print (df.Li.map(tuple) == (1,2))

0     True

1    False

2    False

Name: Li, dtype: bool

或者在列表理解中:


mask = [tuple(x) == (1,2) for x in df.Li]

#alternative

mask = [x == [1,2] for x in df.Li]

print (mask)

[True, False, False]

如果所有列表的長(zhǎng)度相同:


mask = (np.array(df.Li.tolist()) == [1,2]).all(axis=1)

print (mask)

[ True False False]


查看完整回答
反對(duì) 回復(fù) 2022-10-11
?
PIPIONE

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊

問(wèn)題是 pandas 正在考慮[1, 2]作為一個(gè)類似系列的對(duì)象,并試圖將 的每個(gè)元素df.Li與 的每個(gè)元素進(jìn)行比較[1, 2],因此出現(xiàn)錯(cuò)誤:


ValueError:長(zhǎng)度必須匹配才能進(jìn)行比較


您無(wú)法將大小為 2 的列表與大小為 3 ( df.Li) 的列表進(jìn)行比較。為了驗(yàn)證這一點(diǎn),您可以執(zhí)行以下操作:


print(df.Li == [1, 2, 3])

輸出


0    False

1    False

2    False

Name: Li, dtype: bool

它不會(huì)拋出任何錯(cuò)誤并且可以正常工作,但False會(huì)按預(yù)期返回。為了使用列表進(jìn)行比較,您可以執(zhí)行以下操作:


# this creates an array where each element is [1, 2]

data = np.empty(3, dtype=np.object)

data[:] = [[1, 2] for _ in range(3)]


print(df.Li == data)

輸出


0     True

1    False

2    False

Name: Li, dtype: bool

總而言之,這似乎是熊貓方面的一個(gè)錯(cuò)誤。


查看完整回答
反對(duì) 回復(fù) 2022-10-11
?
一只斗牛犬

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊

我的列 'vectors' 包含 numpy ndarrays,當(dāng)我想與另一個(gè) ndarray 'centroid' 進(jìn)行比較時(shí),我得到了同樣的錯(cuò)誤。以下適用于 numpy ndarrays:

df['vectors'].apply(lambda x: ((vec==centroid).sum() == centroid.shape[0]))

這也適用于列表:

df.Li.apply(lambda x: x==[1,2])


查看完整回答
反對(duì) 回復(fù) 2022-10-11
  • 3 回答
  • 0 關(guān)注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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