使用比较运算符根据条件(列)选择行 >

在发现 python 时,我发现自己在尝试根据列的值(宏观营养素)选择行(食物)时遇到了困难。我的条件使用关系运算,输出不正确。(特别是 > 或 < 运算符没有 == 运算符的问题)。

data.loc[data['protein']=='10']

我的代码示例的结果

http://img2.mukewang.com/6152c00c0001208106060395.jpg

结果是正确的,因为所有行(食品)似乎都含有价值 10 的蛋白质。

data.loc[data['protein']>'10']

我的代码示例的结果

http://img3.mukewang.com/6152c0170001fff806340296.jpg

结果不正确,因为所有行的值都不符合给定的条件(您有蛋白质 < 10 的行,就像蛋白质 > 10 的行一样)。

data.loc[data['protein']>'10']

对这个问题有什么想法吗?您认为这与文件格式有关吗(请参阅下面的代码示例)?如果是这样,我该如何解决这个问题?

data = pd.read_excel('Documents/test.xlsx',names=col_names,usecols="D,E,F,G,H,J,M,N,P,Q,R,T,Y,Z,AA", index_col =[3]).

提前致谢,节日快乐!!

[编辑]

所以做了更多的挖掘,确实我在比较两种不同的东西。@Daniel Mesejo 蛋白质的类型是 Object。由于我希望蛋白质列采用浮点格式,因此我决定先将其转换为字符串,然后再转换为浮点数。不幸的是,使用 将其转换为字符串.astype(str)不起作用


跃然一笑
浏览 151回答 2
2回答

FFIVE

使用data['protein'] = data['protein'].astype('int64')将字符串转换为整数,然后重试,你在做什么。

神不在的星期二

您的问题是您正在比较字符串而不是整数。更改data.loc[data['protein']>'10']为data.loc[int(data['protein'])>10]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python