Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.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 在idxmax之前存在多个条件_Python_Pandas_Dataframe - Fatal编程技术网

Python 在idxmax之前存在多个条件

Python 在idxmax之前存在多个条件,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据帧,我想将所有行分组到id中,其中country=rusia和month=march的行后面跟一行country!=俄罗斯 输入数据帧: data = {'fruit': ['pear','cucumber','cherry', 'apricot', 'pear','watermelon','pear','banana', 'pear', 'cherry','apple', 'melon', 'cherry','banana', 'kiwi', 'guava', 'banana'],

我有一个数据帧,我想将所有行分组到
id
中,其中
country=rusia和month=march
的行后面跟一行
country!=俄罗斯

输入数据帧:

data = {'fruit': ['pear','cucumber','cherry', 'apricot', 'pear','watermelon','pear','banana', 'pear', 'cherry','apple', 'melon', 'cherry','banana', 'kiwi', 'guava', 'banana'],
'country': ['france','russia', 'usa','russia', 'франция','russia','usa', 'russia', 'russia','ghana','russia', 'russia', 'albania','andorra', 'russia', 'russia', 'russia'],
'id': ['01','01','01','02','02','03','03','011', '011', '011','011', '6', '6','6', '5', '5', '5'],
'month': ['january','september','january','january', 'september','march','march', 'november', 'march', 'january','january', 'march', 'january','july', 'march', 'march', 'april']        
}
df = pd.DataFrame(data, columns = ['fruit','country', 'id', 'month'])
data = {'fruit': ['watermelon','pear','banana', 'pear', 'cherry','apple', 'melon', 'cherry','banana'],
'country': ['russia','usa', 'russia', 'russia','ghana','russia', 'russia', 'albania','andorra'],
'id': ['03','03','011', '011', '011','011', '6', '6','6'],
'month': ['march','march', 'november', 'march', 'january','january', 'march', 'january','july']        
}
df = pd.DataFrame(data, columns = ['fruit','country', 'id', 'month'])

我认为下面的方法应该有效,但它没有考虑月=3月,我得到了不正确的结果

有人看到问题了吗

df.groupby("id")
   .filter(
       lambda x: x.loc[(x["country"].eq("russia") & x["month"].eq("march")).idxmax() + 1:, ["country"]]
                  .fillna("russia")
                  .ne("russia")
                  .any()))
输出数据帧:

data = {'fruit': ['pear','cucumber','cherry', 'apricot', 'pear','watermelon','pear','banana', 'pear', 'cherry','apple', 'melon', 'cherry','banana', 'kiwi', 'guava', 'banana'],
'country': ['france','russia', 'usa','russia', 'франция','russia','usa', 'russia', 'russia','ghana','russia', 'russia', 'albania','andorra', 'russia', 'russia', 'russia'],
'id': ['01','01','01','02','02','03','03','011', '011', '011','011', '6', '6','6', '5', '5', '5'],
'month': ['january','september','january','january', 'september','march','march', 'november', 'march', 'january','january', 'march', 'january','july', 'march', 'march', 'april']        
}
df = pd.DataFrame(data, columns = ['fruit','country', 'id', 'month'])
data = {'fruit': ['watermelon','pear','banana', 'pear', 'cherry','apple', 'melon', 'cherry','banana'],
'country': ['russia','usa', 'russia', 'russia','ghana','russia', 'russia', 'albania','andorra'],
'id': ['03','03','011', '011', '011','011', '6', '6','6'],
'month': ['march','march', 'november', 'march', 'january','january', 'march', 'january','july']        
}
df = pd.DataFrame(data, columns = ['fruit','country', 'id', 'month'])

IIUC尝试:

将熊猫作为pd导入
数据={‘水果’:[‘梨’、‘黄瓜’、‘樱桃’、‘杏’、‘梨’、‘西瓜’,
‘梨’、‘香蕉’、‘梨’、‘樱桃’、‘苹果’、‘瓜’,
“樱桃”、“香蕉”、“猕猴桃”、“番石榴”、“香蕉”],
‘国家’:[‘法国’、‘俄罗斯’、‘美国’、‘俄罗斯’、‘俄罗斯’,
“美国”、“俄罗斯”、“俄罗斯”、“加纳”、“俄罗斯”、“俄罗斯”,
“阿尔巴尼亚”、“安道尔”、“俄罗斯”、“俄罗斯”、“俄罗斯”],
'id':['01','01','02','02','03','03','011','011','011',
'011', '6', '6', '6', '5', '5', '5'],
“月”:[“一月”、“九月”、“一月”、“一月”、“九月”,
“三月”、“三月”、“十一月”、“三月”、“一月”、“一月”,
“三月”、“一月”、“七月”、“三月”、“三月”、“四月”]
}
df=pd.DataFrame(数据,列=['fruit','country','id','month'])
#Groupby ID然后包括具有
#至少有一行符合所有条件
out=df.groupby('id')。过滤器(
lambda g:(
g[“国家”].eq(“俄罗斯”)和
g[‘月’].eq(‘三月’)&
g['country'].shift(-1).ne('russia'))
).any()
).reset_索引(drop=True)
打印(输出)
out

水果国id月
3月0日至3月3日
3月1日至3日
2011年11月2日
2011年3月3日
2011年1月4日
2011年1月5日
3月6日至6日
1月7日至6日
8安道尔7月6日

欢迎使用堆栈溢出!你的问题目前还不清楚。您还没有告诉我们您的输入数据帧是什么样子,您的预期/期望输出是什么,以及它与您得到的结果有何不同。要从社区获得良好的帮助,请提供。可以找到有关提供可复制熊猫示例的其他信息。@AlexK谢谢,我刚刚添加了必要的数据非常感谢,很高兴我能提供帮助:-)