设置每17行左右变化一次的索引
我从很多《幸存者》季节中提取了数据,并把选手的信息整理到一个数据框里。我还添加了一列,用来标识每个选手参加的是哪个季节。我想把这个数据框的索引设置为季节,以便最终按季节排序。但是,当我把索引设置为“季节”时,所有的值都变成了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
...