设置每17行左右变化一次的索引

1 投票
1 回答
44 浏览
提问于 2025-04-14 16:29

我从很多《幸存者》季节中提取了数据,并把选手的信息整理到一个数据框里。我还添加了一列,用来标识每个选手参加的是哪个季节。我想把这个数据框的索引设置为季节,以便最终按季节排序。但是,当我把索引设置为“季节”时,所有的值都变成了NaN(缺失值)。我不知道自己哪里出错了。应该参考哪个文档呢?关于.set_index的文档对我来说并没有太大帮助。我是个初学者,可能有点超出我的能力范围。

当前代码:

import pandas as pd
import numpy as py

contestants = {}

for season in range(11, 47) :
    wiki_url = f'https://en.wikipedia.org/wiki/Survivor_{season}'

    tables = pd.read_html(wiki_url)
    contestants[season] = tables[1]
    contestants[season]['Season'] = season

contestants_joined = pd.concat(contestants.values()).set_index('Season', drop=False, inplace=False)

print(contestants_joined)

然后我得到的结果是

       (Contestant, Contestant) (Age, Age)                (From, From)  \
Season                                                                   
NaN                   Jim Lynch         63        Northglenn, Colorado   
NaN             Morgan McDevitt         21           Decatur, Illinois   
NaN              Brianna Varela         21         Edmonds, Washington   
NaN               Brooke Struck         25          Hood River, Oregon   
NaN               Blake Towsley         24               Dallas, Texas   
...                         ...        ...                         ...   
NaN               Soda Thompson         27  Lake Hopatcong, New Jersey   
NaN                 Tevin Davis         24          Richmond, Virginia   
NaN        Tiffany Nicole Ervin         33       Elizabeth, New Jersey   
NaN                  Tim Spicer         31            Atlanta, Georgia   
NaN                  Venus Vafa         24            Toronto, Ontario   

       (Tribe, Original) (Tribe, Switched) (Tribe, Merged)  \
Season                                                       
NaN                Nakúm               NaN             NaN   
NaN                Yaxhá               NaN             NaN   
NaN                Yaxhá               NaN             NaN   
NaN                Nakúm             Nakúm             NaN   
NaN                Nakúm             Yaxhá             NaN   
...                  ...               ...             ...   
NaN                 Nami               NaN             NaN   
NaN                 Nami               NaN             NaN   
NaN                 Yanu               NaN             NaN   
...
NaN                     NaN           NaN  
NaN                     NaN           NaN  

确实把索引设置成了“季节”这一列,但所有的值都是NaN。

任何帮助都非常感谢。

1 个回答

1

我建议把多重索引的数据框扁平化,也就是让列里只有一个索引层级。这样做可以让你得到正确的索引,而且不会有NaN值出现:

import numpy as py
import pandas as pd

contestants = {}

for season in range(11, 47):
    wiki_url = f"https://en.wikipedia.org/wiki/Survivor_{season}"

    table = pd.read_html(wiki_url)[1]

    # flatten index
    table.columns = ["_".join(t) if isinstance(t, tuple) else t for t in table.columns]

    contestants[season] = table
    contestants[season]["SeasonNumber"] = season

contestants_joined = pd.concat(contestants.values()).set_index(
    "SeasonNumber", drop=False, inplace=False
)

print(contestants_joined)

输出结果:

                                                      Contestant_Contestant                                Age_Age                              From_From Tribe_Original Tribe_Switched Tribe_Merged                     Finish_Placement Finish_Day  SeasonNumber Tribe_Post-mutiny Tribe_First switch Tribe_Second switch                 Main game[a]_Finish Main game[a]_Day      Redemption Island_Finish Redemption Island_Day Tribe_Absorbed                         Name   Age                 Hometown    Original season                                               Survivor: Kaôh Rōng                                             Survivor: Kaôh Rōng.1  Edge of Extinction_Finish Edge of Extinction_Day                                                Contestant[a]_Contestant[a]               Main game[b]_Finish Main game[b]_Day Tribe_None
SeasonNumber                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
11                                                                Jim Lynch                                     63                   Northglenn, Colorado          Nakúm            NaN          NaN                        1st voted out      Day 3            11               NaN                NaN                 NaN                                 NaN              NaN                           NaN                   NaN            NaN                          NaN   NaN                      NaN                NaN                                                               NaN                                                               NaN                        NaN                    NaN                                                                        NaN                               NaN              NaN        NaN
11                                                          Morgan McDevitt                                     21                      Decatur, Illinois          Yaxhá            NaN          NaN                        2nd voted out      Day 6            11               NaN                NaN                 NaN                                 NaN              NaN                           NaN                   NaN            NaN                          NaN   NaN                      NaN                NaN                                                               NaN                                                               NaN                        NaN                    NaN                                                                        NaN                               NaN              NaN        NaN
11                                                           Brianna Varela                                     21                    Edmonds, Washington          Yaxhá            NaN          NaN                        3rd voted out      Day 8            11               NaN                NaN                 NaN                                 NaN              NaN                           NaN                   NaN            NaN                          NaN   NaN                      NaN                NaN                                                               NaN                                                               NaN                        NaN                    NaN                                                                        NaN                               NaN              NaN        NaN
11                                                            Brooke Struck                                     25                     Hood River, Oregon          Nakúm          Nakúm          NaN                        4th voted out     Day 11            11               NaN                NaN                 NaN                                 NaN              NaN                           NaN                   NaN            NaN                          NaN   NaN                      NaN                NaN                                                               NaN                                                               NaN                        NaN                    NaN                                                                        NaN                               NaN              NaN        NaN
11                                                            Blake Towsley                                     24                          Dallas, Texas          Nakúm          Yaxhá          NaN                        5th voted out     Day 14            11               NaN                NaN                 NaN                                 NaN              NaN                           NaN                   NaN            NaN                          NaN   NaN                      NaN                NaN                                                               NaN                                                               NaN                        NaN                    NaN                                                                        NaN                               NaN              NaN        NaN
11                                                        Margaret Bobonich                                     43                          Chardon, Ohio          Nakúm          Nakúm          NaN                        6th voted out     Day 15            11               NaN                NaN                 NaN                                 NaN              NaN                           NaN                   NaN            NaN                          NaN   NaN                      NaN                NaN                                                               NaN                                                               NaN                        NaN                    NaN                                                                        NaN                               NaN              NaN        NaN
11                                                           Brian Corridan                                     22                New York City, New York          Yaxhá          Yaxhá          NaN                        7th voted out     Day 15            11               NaN                NaN                 NaN                                 NaN              NaN                           NaN                   NaN            NaN                          NaN   NaN                      NaN                NaN                                                               NaN                                                               NaN                        NaN                    NaN                                                                        NaN                               NaN              NaN        NaN
11                                                               Amy O'Hara                                     39                  Revere, Massachusetts          Yaxhá          Yaxhá          NaN                        8th voted out     Day 18            11               NaN                NaN                 NaN                                 NaN              NaN                           NaN                   NaN            NaN                          NaN   NaN                      NaN                NaN                                                               NaN                                                               NaN                        NaN                    NaN                                                                        NaN                               NaN              NaN        NaN
11                                                        Brandon Bellinger                                     22                      Manhattan, Kansas          Nakúm          Yaxhá       Xhakúm                        9th voted out     Day 21            11               NaN                NaN                 NaN                                 NaN              NaN                           NaN                   NaN            NaN                          NaN   NaN                      NaN                NaN                                                               NaN                                                               NaN                        NaN                    NaN                                                                        NaN                               NaN              NaN        NaN
11                                                 Bobby Jon Drinkard Palau                                     28                          Troy, Alabama          Nakúm          Yaxhá       Xhakúm       10th voted out 1st jury member     Day 24            11               NaN                NaN                 NaN                                 NaN              NaN                           NaN                   NaN            NaN                          NaN   NaN                      NaN                NaN                                                               NaN                                                               NaN                        NaN                    NaN                                                                        NaN                               NaN              NaN        NaN
11                                                             Jamie Newton                                     24                       Douglas, Georgia          Yaxhá          Nakúm       Xhakúm       11th voted out 2nd jury member     Day 27            11               NaN                NaN                 NaN                                 NaN              NaN                           NaN                   NaN            NaN                          NaN   NaN                      NaN                NaN                                                               NaN                                                               NaN                        NaN                    NaN                                                                        NaN                               NaN              NaN        NaN
11                                                            Gary Hogeboom                                     46                  Grand Haven, Michigan          Yaxhá          Yaxhá       Xhakúm       12th voted out 3rd jury member     Day 30            11               NaN                NaN                 NaN                                 NaN              NaN                           NaN                   NaN            NaN                          NaN   NaN                      NaN                NaN                                                               NaN                                                               NaN                        NaN                    NaN                                                                        NaN                               NaN              NaN        NaN
11                                                            Judd Sergeant                                     34                 Ridgefield, New Jersey          Nakúm          Nakúm       Xhakúm       13th voted out 4th jury member     Day 33            11               NaN                NaN                 NaN                                 NaN              NaN                           NaN                   NaN            NaN                          NaN   NaN                      NaN                NaN                                                               NaN                                                               NaN                        NaN                    NaN                                                                        NaN                               NaN              NaN        NaN
11                                                               Cindy Hall                                     31                        Naples, Florida          Nakúm          Nakúm       Xhakúm       14th voted out 5th jury member     Day 36            11               NaN                NaN                 NaN                                 NaN              NaN                           NaN                   NaN            NaN                          NaN   NaN                      NaN                NaN                                                               NaN                                                               NaN                        NaN                    NaN                                                                        NaN                               NaN              NaN        NaN
11                                                            Lydia Morales                                     42                   Lakewood, Washington          Yaxhá          Nakúm       Xhakúm       15th voted out 6th jury member     Day 37            11               NaN                NaN                 NaN                                 NaN              NaN                           NaN                   NaN            NaN                          NaN   NaN                      NaN                NaN                                                               NaN                                                               NaN                        NaN                    NaN                                                                        NaN                               NaN              NaN        NaN
11                                                             Rafe Judkins                                     22               Pittsburgh, Pennsylvania          Yaxhá          Nakúm       Xhakúm       16th voted out 7th jury member     Day 38            11               NaN                NaN                 NaN                                 NaN              NaN                           NaN                   NaN            NaN                          NaN   NaN                      NaN                NaN                                                               NaN                                                               NaN                        NaN                    NaN                                                                        NaN                               NaN              NaN        NaN
11                                                 Stephenie LaGrossa Palau                                     25                 Toms River, New Jersey          Yaxhá          Nakúm       Xhakúm                            Runner-up     Day 39            11               NaN                NaN                 NaN                                 NaN              NaN                           NaN                   NaN            NaN                          NaN   NaN                      NaN                NaN                                                               NaN                                                               NaN                        NaN                    NaN                                                                        NaN                               NaN              NaN        NaN

...

撰写回答