Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:根据条件检索数据时返回的行不正确_Python_Pandas_Dataframe - Fatal编程技术网

Python 熊猫:根据条件检索数据时返回的行不正确

Python 熊猫:根据条件检索数据时返回的行不正确,python,pandas,dataframe,Python,Pandas,Dataframe,当使用以下代码将列1+列2+列3相加时,我试图检索数据帧中不等于100的行: df.loc[(df["col_1"] + df["col_2"] + df["col_3"]).ne(100)] 但是,当执行代码检索这些行时,当这三列相加时,我得到的行等于100,包括不等于100的行。因此,当这些列相加时,我只在不等于100的行后面 例如,查看下面的示例 当代码被执行时,这就是我得到的。如您所见,第一行加起来是80,第二行加起来是90,

当使用以下代码将列1+列2+列3相加时,我试图检索数据帧中不等于100的行:

df.loc[(df["col_1"] + df["col_2"] + df["col_3"]).ne(100)]
但是,当执行代码检索这些行时,当这三列相加时,我得到的行等于100,包括不等于100的行。因此,当这些列相加时,我只在不等于100的行后面

例如,查看下面的示例

当代码被执行时,这就是我得到的。如您所见,第一行加起来是80,第二行加起来是90,最后三行加起来是100。因此,最后三行不应该在那里,因为当这三列相加时,我只希望的行不等于100

关于如何实现这一点的任何帮助都将非常有用。也许我使用的代码有问题

谢谢

---------------------------------
ID     col_1     col_2     col_3
---------------------------------
1      50        10        20
---------------------------------
2      30        20        40
---------------------------------
3      40        50        10
---------------------------------
4      10        90        0
---------------------------------
5      70        20        10
---------------------------------


让我们将数据加载到一个框架中:

import pandas as pd

# Not the best way, but it's sufficient
df = pd.DataFrame()
df["col_1"] = [50, 10, 40, 10, 70]
df["col_2"] = [10, 20, 50, 90, 20]
df["col_3"] = [20, 40, 10, 0, 10]


# Now retrieve only rows not summing to 100 (NOTE: This is your code)
df.loc[(df["col_1"] + df["col_2"] + df["col_3"]).ne(100)]
输出

上校1 col_2 第3栏 0 50 10 20 1. 10 20 40
我不知道你的问题在哪里。运行您在提供的数据帧上共享的代码行,结果仅返回预期的2行。是的,这是正确的。但是,我只希望输出只返回预期的2行,而不是任何等于100的内容。:)您的代码按预期工作。返回行
ID 1
ID 2
。它不会返回与示例代码和示例数据相等的行。请使用您为自己提供的数据尝试您的代码。20美元整数是字符串,可通过
df.info()
验证。如果“Object”是数据类型,那么您需要使用
df[“col_1”]=df[“col_1”]”将列转换为int。astype(int)
并对int列重复。我明白您的意思:我的代码可以工作。但是,当我执行它时,它返回5行,而不是2行!这就是让我困惑的地方。我知道你的输出是正确的。但是,当我自己执行它时,输出包括等于100的值。然后我建议仔细比较版本和您在问题中提供的示例行。您在本地执行的内容和您在这里提供的内容有所不同。我只能根据我掌握的信息提供答案,根据我掌握的信息,您的代码没有问题。好的,谢谢。我正在使用Google Colab。@AnandP2812是您的整数字符串吗?使用
df[“col_1”]=df[“col_1”].astype(int)
并对所有
int
列执行此操作。您可以使用
df.info()
@DavidErickson验证您的数据类型。我更新了支持该案例的答案。如果列都是字符串,那么它们都将返回。我不知道为什么我当初没有考虑这个问题。抢手货