我有一个DataFrame limitdf,它的值存储在31个bin中,标签在MASS_BINS列中。我想要通过bin找到此DataFrame中对象的其他列的平均值和标准差。我尝试为每个(mean , std)生成一个元组数组:
stdarray = []
for i in range(0 , 31):
stdarray[i] = [(limitdf['td_lmass'][limitdf.MASS_BINS == i].mean(axis = 0) , limitdf['PAB_SFR_EX2'][limitdf.MASS_BINS == i].std(axis = 0))]这和IndexError: list assignment index out of range一起对我大喊大叫。为什么这不起作用,或者有更好和更简单的方法来做这件事?
发布于 2020-08-13 00:14:01
你试过熊猫的DataFrame.rolling吗?看看this吧。
发布于 2020-08-13 00:16:30
我相信这不是pandas的问题,而是当stdarray是长度为0的列表时,您试图在stdarray中为索引i赋值的问题。
在简单的语言中,如果i=0,那么您对python说的就是“请用x替换stdarray的元素0”。但是stdarray没有元素0,所以python崩溃了。
因为您正在尝试将某些内容assign到out of range类型的list index。
要解决您的问题,您应该尝试使用stdarray.append(YOUR_CODE_HERE)而不是stdarray[i] = YOUR_CODE_HERE
https://stackoverflow.com/questions/63380541
复制相似问题