Python:修改pandas数据帧的行索引

37

我有一个名为 followers_df 的数据框,如下所示:

 followers_df

             0
0         oasikhia 
0     LEANEnergyUS
0  _johannesngwako
0     jamesbreenre
0   CaitlinFecteau
0  mantequillaFACE
0         apowersb
0       ecoprinter
0        tsdesigns
0      GreenBizDoc
0        JimHarris
0    Jmarti11Julia
0         JAslat63
0            prAna
0    GrantLundberg 
0        Jitasa_Is
0     ChoosePAWind
0  cleanpowerperks
0          WoWEorg
0      Laura_Chuck

我想将这个数据框转换成这样的形式:

 followers_df

             0
0          oasikhia 
1      LEANEnergyUS
2   _johannesngwako
3      jamesbreenre
4    CaitlinFecteau
5   mantequillaFACE
6          apowersb
7        ecoprinter
8         tsdesigns
9       GreenBizDoc
10        JimHarris
11    Jmarti11Julia
12         JAslat63
13            prAna
14    GrantLundberg 
15        Jitasa_Is
16     ChoosePAWind
17  cleanpowerperks
18          WoWEorg
19      Laura_Chuck

我该怎么做?我尝试了:

     index = pandas.Index(range(20))
     followers_df = pandas.DataFrame(followers_df, index=index)

但是它给我以下错误:

  ValueError: Shape of passed values is (1, 39), indices imply (1, 20)

谢谢,


具体来说,您可以查看此答案,了解如何从列或任意可迭代项设置索引。 - cs95
3个回答

73

你可以做

followers_df.index = range(20)

24
followers_df.reset_index()
followers_df.reindex(index=range(0,20))

2
我看到你的回答更受欢迎,是我回答中分配索引的方式有问题吗? - Roman Pekar
你好,由于某些原因,我在尝试你的代码后一直收到相同的错误提示:“传递值的形状为(1, 39),但索引表明为(1, 20)”。供参考,我使用了 pandas.concat() 来构建 followers_df。请问如何解决这个问题? - Jin-Dominique
你有重复值(数字0),不能使用重复值重新索引,需要先使用reset_index函数。 - Jeff

21

当您不确定行数时,可以按照以下方式进行操作:

followers_df.index = range(len(followers_df))

1
@reportgunner,请不要用“哦,我的天啊,这让我眼睛流血”的方式来解释。 - U13-Forward
1
我认为应该是“followers_df.index = range(0, len(followers_df))”吧?不管怎样,在我的情况下必须这样做。 - Ben
@Ben - 两者都可以。 - Shivpe_R
不是我的情况,这就是我想出来的:p - Ben

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接