鍍金池/ 問答/數(shù)據(jù)分析&挖掘  Python  HTML/ 2組numpy數(shù)據(jù)對比時的異常

2組numpy數(shù)據(jù)對比時的異常

1、我在將2個dataframe表格的真實(shí)數(shù)據(jù)轉(zhuǎn)化成numpy數(shù)據(jù)做列內(nèi)容對比,遇到以下的情況:
input:

不同數(shù)組的單個元素

d12.values[0] [0],
d12.values[1] [0],
d11.values[0] [1],
d11.values[1] [1],

用其中一個數(shù)組的元素跟另外數(shù)組列去做矢量對比

d12.values[0] [0] == d11.values[:,1]

Output:
(u'u6db2/u7cbe/u7c89',
u'u6db2/u7cbe/u7c89',
u'u6db2/u7cbe/u7c89',
u'u6db2/u7cbe/u7c89',
False)

input:
d12.values[0] [0] == d11.values[0] [1],
d12.values[0] [0] == d11.values[1] [1]

Output:
(True, True)

不同數(shù)組中列中的一些元素單個對比時是一樣的,但用單個元素跟另外數(shù)組矢量對比時返回全是False。
而自己另外建的測試數(shù)據(jù)做對比卻很正常:
input:
d1 = pd.DataFrame([['x','c01','甲','1010'],['x','c01','甲','1020'],['x','c02','乙','1010'],['y','c02','乙','1020'],['y','c03','丙','1020'],['z','c03','丙','1030']],columns = list('abcd'))
d1

output:
clipboard.png

input:
d2 = pd.DataFrame([['x','20001','5層紙箱30cm'],['x','20002','1層紙箱50cm'],['x','20003','3層紙箱40cm'],['y','20004','內(nèi)袋10克'],['y','20005','貼膜30克'],['z','20006','瓶子100克'],['z','20007','瓶子200克'],['z','20008','瓶子300克']],columns = list('aef'))
d2

ouput:

clipboard.png

input:
d2.values[0] [0] == d1.values[:,0]

output:
array([ True, True, True, False, False, False], dtype=bool)

問題:為什么一對一作比較是相同的情況,在一對多(整個數(shù)組)時返回的是全是False的結(jié)果?
補(bǔ)充一點(diǎn),前面在做真實(shí)數(shù)據(jù)對比時還遇到這種報錯(測試數(shù)據(jù)沒有遇到):
D:Anaconda2libsite-packagesipykernel__main__.py:8: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
后面設(shè)置一下:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
報錯沒有了,但是就出現(xiàn)以上的問題。

回答
編輯回答
任她鬧

看起來是字符串的編碼問題,請把所有字符串轉(zhuǎn)成 unicode 試一下。

2017年2月7日 02:12