【发布时间】:2021-01-14 23:20:02
【问题描述】:
在 Jupyter Notebook 上探索 Olympics 数据集时,我试图从 this dataset 中找出最古老的运动。
这是我目前拥有的代码:
sports = olympics.set_index('Sport')
sport_name = olympics['Sport'].unique()
for sport in sport_name:
years_played = sports.loc[sport, ['Year']].max() - sports.loc[sport, ['Year']].min()
print(sport, years_played)
代码返回这个结果:
Basketball Year 80.0
dtype: float64
Judo Year 52.0
dtype: float64
Boxing Year 112.0
dtype: float64
Here's a screenshot to the output.
注意每个浮点数前面都有一个字符串“Year”。
然后我尝试使用以下代码将其转换为 DataFrame:
sports = olympics.set_index('Sport')
sport_name = olympics['Sport'].unique()
for sport in sport_name:
years_played = sports.loc[sport, ['Year']].max() - sports.loc[sport, ['Year']].min()
rows = []
rows = rows.append([sport, years_played])
pd.DataFrame(rows, columns = ['Sport', 'Years Played'])
返回错误:KeyError: nan。 Here's a screenshot to the error.
我有两个问题:
- 为什么循环在每个浮点结果之前返回一个字符串“Year”?我尝试在循环外使用同一行代码(使用
.loc,然后用.min()减去.max()),结果之前没有字符串,只有结果浮点数。 - 是什么导致了
nan错误?
非常感谢。
【问题讨论】:
标签: python pandas indexing jupyter-notebook