panda根据列值移动特定行的特定列

2024-09-26 17:43:55 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个关于2005-2016年nfl统计数据的大数据集。问题是,2009年增加了一个新的类别,所以我的专栏在2009年之前就被抵消了。我希望所有有'NFL Season'列的行向右移动<;到2009赛季,但是只有第11列到第二列到最后一列(所以[11:-1])。在

我设法这样做,但是迭代所有这些行(大约10000行)需要很长时间。有没有更快的方法?我想知道是否有一种方法可以使用.isin,我可以说这行是否在我的“rows_-to-u-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)

Tags: to数据方法dfshift类别统计数据rows
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)

对不起,我很笨,因为我一开始就没想到这件事,浪费了你的时间。这么简单的解决方案,我想得太多了。不需要迭代,只需调用这些行:

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)

相关问题 更多 >

    热门问题