我有一个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
复制相似问题