Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.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 使用itertuples()在数据帧上迭代,条件是列值_Python_Pandas_Dataframe_Datetime - Fatal编程技术网

Python 使用itertuples()在数据帧上迭代,条件是列值

Python 使用itertuples()在数据帧上迭代,条件是列值,python,pandas,dataframe,datetime,Python,Pandas,Dataframe,Datetime,每次x我都试图在数据帧中选择一个范围,为什么不使用groupby df.groupby(df['x'].shift().le(20).cumsum()) \ .agg(Date=('Date','last'), sum = ('x','sum')).set_index('Date') sum Date 2019-01-05 353 2019-01-10 804 2019-01-15 650 2019-01-20 428 为什么不使用g

每次x我都试图在数据帧中选择一个范围,为什么不使用groupby

df.groupby(df['x'].shift().le(20).cumsum()) \
  .agg(Date=('Date','last'), sum = ('x','sum')).set_index('Date')

            sum
Date           
2019-01-05  353
2019-01-10  804
2019-01-15  650
2019-01-20  428
为什么不使用groupby

df.groupby(df['x'].shift().le(20).cumsum()) \
  .agg(Date=('Date','last'), sum = ('x','sum')).set_index('Date')

            sum
Date           
2019-01-05  353
2019-01-10  804
2019-01-15  650
2019-01-20  428

有人已经提出了一个看起来不错的答案,所以我要补充的是,当使用Pandas时,显式迭代应该是最后的手段。这是一个功能强大的库,大多数用例都已经介绍过了。有人已经提出了一个看起来不错的答案,所以我要补充的是,在使用Pandas时,显式迭代应该是最后的选择。这是一个功能强大的库,大多数用例都已经介绍过了。这个解决方案在“日期”没有事先设置为索引的情况下有效,因为我忘了提到它,对不起。因为当我使用您的解决方案时,我会得到这样的结果:keyrerror:“列'Date'不存在!”在使用groupby()之前,我是否必须将索引“unset”为“normal”列?最简单的方法实际上是重置索引。您可以告诉我有关此“le(20)”的更多信息吗如果x的值都是负数,条件应该设置为x>=-20(-20是最大值/最大值),那么主要的想法是在每个组的开始处设置True,然后求和填充0到第一组,1到第二组,依此类推。你可以再做一列
df['g']=df['x'].shift().le(20).cumsum()
来选择给出预期组的公式我真的不确定我明白你的意思了!很抱歉但这是真的!此解决方案在“日期”未事先设置为索引时有效,因为我忘了提及它,对不起。因为当我使用您的解决方案时,我会得到这样的结果:keyrerror:“列'Date'不存在!”在使用groupby()之前,我是否必须将索引“unset”为“normal”列?最简单的方法实际上是重置索引。您可以告诉我有关此“le(20)”的更多信息吗如果x的值都是负数,条件应该设置为x>=-20(-20是最大值/最大值),那么主要的想法是在每个组的开始处设置True,然后求和填充0到第一组,1到第二组,依此类推。你可以再做一列
df['g']=df['x'].shift().le(20).cumsum()
来选择给出预期组的公式我真的不确定我明白你的意思了!很抱歉但这是真的!