根据请求的列获取dataframe(python)的子集

根据请求的列获取dataframe(python)的子集,python,pandas,dataframe,Python,Pandas,Dataframe,我对python中的dataframe有以下问题: 我有一个dataframe,它有一个ID列(不是索引)和其他列。 现在我想编写一个代码,返回一个新的数据框,其中所有行在columnx中的值都与请求的项ID相同。它还应该包含数据框df的所有列 def子集(itemID): columnxValue=df[df['ID']==itemID]['columnx'] 子集=df[df['columnx']==columnxValue] 返回子集 如果我这样做,我总是得到错误“只能比较相同标签的系列

我对python中的
dataframe
有以下问题:

我有一个
dataframe
,它有一个ID列(不是索引)和其他列。 现在我想编写一个代码,返回一个新的数据框,其中所有行在columnx中的值都与请求的项ID相同。它还应该包含数据框df的所有列

def子集(itemID):
columnxValue=df[df['ID']==itemID]['columnx']
子集=df[df['columnx']==columnxValue]
返回子集
如果我这样做,我总是得到错误“只能比较相同标签的系列对象


我把问题改得更清楚了。

你的意思是这样的吗? 您将
ItemID
作为
subset
函数的参数。然后它检查
ItemID
是否对应于
ID
列中的值。它从
ItemID
等于
ID
列中的行返回
columnx
中的值

def subset(itemID):
 columnValueRequest = df[df['ID'] == itemID][columnx]
 subset = df[df[columnx] == columnValueRequest]
 return subset

您可以按如下方式使用:

def subset(itemID):
    columnValueRequest = df.loc[df['ID'] == itemID, 'columnx'].iloc[0]
    subset1 = df[df['columnx'] == columnValueRequest]
    return subset1

由于要获取值,而不是变量
columnValueRequest
的序列,因此必须进一步使用
.iloc[0]
来获取(第一个)值。

解释/伪代码对我来说并不完全清楚。如果您可以包含一个小样本数据帧,并使用该数据帧解释您正试图基于什么条件获取哪些值,这会有所帮助。谢谢!这已经有所帮助,但我始终会得到错误“只能比较标签相同的系列对象…这将返回请求集itemID的columnx。但我需要的是一个包含所有行的数据帧,这些行在columnx中的值与请求的值相同itemID@Python101请参阅上面的编辑。我总是得到一个错误,即未定义columnx。如果我用df['columnx']替换它,它会返回所有的行columnx条目,错误是[columns]@Python101用一对单引号括住
columnx
。它可以工作!谢谢