【发布时间】:2013-10-03 11:11:37
【问题描述】:
我有一个关于熊猫的简单索引问题。 我想做一个简单的 for 循环来遍历数字 1 到 5。 我在如何执行此操作时遇到了熊猫索引问题(尽管我确信它很简单!)
我的粗略代码:
def averaged_rel_track(current_tracks, rel_values):
current_tracks['rel_values']=rel_values
current_tracks=current_tracks.set_index('candidate')
#I would like this line to loop over numbers 1 to 5
b_1= current_tracks.rel_values.loc['1']
我尝试过的:
for i in range(1, 6):
b=current_tracks.rel_values.iloc[i]
for i in range (1, 6):
b = current_tracks.rel_values[i]
for i in range (1, 6):
b=current_tracks.rel_values['i']
以及其他各种类似的变体(包括.ix, .iloc, .loc)
【问题讨论】:
-
循环遍历索引是最后的手段。你能给出更大的图景吗? (你想做什么?)可能有一些矢量化的方法可以更简洁、更快地做到这一点。
-
我认为它很慢,但我从来没有新的更好的方法来做到这一点! (新手)下面的汉斯回答有另一种我认为更好的方法吗?基本上我有一个 3 列的数据框,其中一列称为
'candidate',它的范围为 1、5。基本上我想依次选择 1、2、3、4、5 的所有值. -
我正在考虑更大的图景,但这可能超出了您的问题范围。据推测,您正在对每个值(1、2、3、4)做一些事情,我的问题是,您在做什么?
-
我正在对对应于 1、2、3、4 或 5 的所有数据进行滚动平均。希望这是有道理的!
-
也许是
pd.concat([pd.rolling_mean(grp) for _, grp in current_tracks.groupby(rel_values)]),具体取决于您的意思。考虑使用您的数据样本和所需输出的样本打开一个新问题。绝对有一种简单的方法可以做到这一点,也许在一行中。