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

2024-10-03 23:21:46 发布

您现在位置:Python中文网/ 问答频道 /正文

在发现python时,我发现自己一直在尝试根据列的值(宏nutriments)选择行(食物项)。我的条件使用关系操作,输出不正确。 (尤其是对于不存在==运算符问题的>;或<;运算符)。你知道吗

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

我的代码示例的结果

enter image description here

结果是正确的,因为所有的行(食物)似乎都有一个值为10的蛋白质。你知道吗

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

我的代码示例的结果

enter image description here

结果不正确,因为所有行都有一个不符合给定条件的值(protein<;10的行与protein>;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]).

提前谢谢,节日快乐!!你知道吗

[已编辑]

所以我做了更多的挖掘,确实我在比较两个不同的东西。@蛋白质的类型是物体。因为我想让protein列采用float格式,所以我决定先将它转换成string,然后再转换成float。不幸的是,使用.astype(str)将其转换为字符串不起作用

result


Tags: 代码ltgt示例datanames运算符col
2条回答

你的问题是你比较的是字符串而不是整数。将data.loc[data['protein']>'10']更改为data.loc[int(data['protein'])>10]

使用data['protein'] = data['protein'].astype('int64')将字符串转换为整数,然后重试所做的操作。你知道吗

相关问题 更多 >