Python 使用itertuples()在数据帧上迭代,条件是列值
每次x我都试图在数据帧中选择一个范围,为什么不使用groupbyPython 使用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
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()
来选择给出预期组的公式我真的不确定我明白你的意思了!很抱歉但这是真的!