2组numpy数据对比时的异常
1、我在将2个dataframe表格的真实数据转化成numpy数据做列内容对比,遇到以下的情况:
input:
不同数组的单个元素
d12.values[0] [0],
d12.values[1] [0],
d11.values[0] [1],
d11.values[1] [1],
用其中一个数组的元素跟另外数组列去做矢量对比
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)
不同数组中列中的一些元素单个对比时是一样的,但用单个元素跟另外数组矢量对比时返回全是False。
而自己另外建的测试数据做对比却很正常:
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:
input:
d2 = pd.DataFrame([['x','20001','5层纸箱30cm'],['x','20002','1层纸箱50cm'],['x','20003','3层纸箱40cm'],['y','20004','内袋10克'],['y','20005','贴膜30克'],['z','20006','瓶子100克'],['z','20007','瓶子200克'],['z','20008','瓶子300克']],columns = list('aef'))
d2
ouput:
input:
d2.values[0] [0] == d1.values[:,0]
output:
array([ True, True, True, False, False, False], dtype=bool)
问题:为什么一对一作比较是相同的情况,在一对多(整个数组)时返回的是全是False的结果?
补充一点,前面在做真实数据对比时还遇到这种报错(测试数据没有遇到):
D:Anaconda2libsite-packagesipykernel__main__.py:8: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
后面设置一下:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
报错没有了,但是就出现以上的问题。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看起来是字符串的编码问题,请把所有字符串转成 unicode 试一下。