Pandas - 根据列值移动某些行的特定列

时间:2017-09-10 13:54:29

标签: python pandas

所以我在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)

2 个答案:

答案 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)
相关问题