根据请求的列获取dataframe(python)的子集
我对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] 返回子集 如果我这样做,我总是得到错误“只能比较相同标签的系列
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
。它可以工作!谢谢