所以我在2005年至2016年的nfl统计数据中有一个很大的数据集。问题是,2009年有一个新的类别,所以我的列在2009年之前被抵消了。我想要所有的行都有' NFL季'列<到2009赛季向右转,但只有第11列到第二列(所以[11:-1])。
我设法以这种方式做到了,但迭代所有这些行(大约10,000)需要很长时间。有更快的方法吗?我试着看看有没有办法使用.isin
我可以说我的行是否在我的' rows_to_shift',但无法弄清楚它是如何工作的。
就像我说的那样,在我还在学习大熊猫的时候,我不得不知道更好或更有效的方法。
以下是我一直在使用的代码:
rows_to_shift = rb_df[rb_df['NFL Season'] < 2009].index.tolist()
for i in rows_to_shift:
rb_df.iloc[[i],11:-1] = rb_df.iloc[[i],11:-1].shift(1,axis=1)
答案 0 :(得分:2)
似乎你需要:
rows_to_shift = rb_df[rb_df['NFL Season'] < 2009].index
rb_df.iloc[rows_to_shift,11:-1] = rb_df.iloc[rows_to_shift,11:-1].shift(1,axis=1)
答案 1 :(得分:0)
对不起,我傻到没想到这一点并浪费你的时间。这样一个简单的解决方案,我一直在思考这个问题。没有必要迭代,只需调用那些行:
rb_df.iloc[rb_df[rb_df['NFL Season'] < 2009].index,11:-1] = rb_df.iloc[rb_df[rb_df['NFL Season'] < 2009].index,11:-1].shift(1,axis=1)