对数据框 df 中的 "学校名称" 和年份”列进行计数,然后使用 rename_axis() 和 reset_index() 方法来创建一个新的数据帧,列名分别为 “年份”和"学校名称" 和 "专业名称"。最终得到的数据框包含了每个学校所拥有的专业数量。
时间: 2024-04-29 18:26:21 浏览: 100
好的,我理解了你的要求。下面是代码实现:
```
# 统计每个学校每个年份的专业数量
df_count = df.groupby(["学校名称", "年份"])["专业名称"].count()
# 将结果转换成新的数据框
df_result = df_count.rename_axis(["学校名称", "年份"]).reset_index().rename(columns={"专业名称": "专业数量"})
# 调整列的顺序,并显示结果
df_result = df_result[["年份", "学校名称", "专业数量"]]
print(df_result)
```
需要注意的是,代码中的 `df` 是指输入数据框,里面必须包含 "学校名称"、"年份" 和 "专业名称" 三列。如果数据框名称不同,请自行替换。
相关问题
major_count = df["学校名称"].value_counts().rename_axis("学校名称" ).reset_index(name="专业名称")
我的理解是你想问该代码段的作用是什么。这段代码的作用是对数据框 df 中的 "学校名称" 列进行计数,并将结果存储在一个名为 major_count 的 pandas Series 中。然后使用 rename_axis() 和 reset_index() 方法来创建一个新的数据帧,列名分别为 "学校名称" 和 "专业名称"。最终得到的数据框包含了每个学校所拥有的专业数量。
代码含义 country_dict = {i.alpha_2: i.alpha_3 for i in pycountry.countries} countries = (pd.DataFrame(df.country.value_counts()).T.drop('NONE', axis=1).rename(columns=country_dict, index={'country': 'count'}) ) print(countries) countries_rank = countries.T.rename_axis('iso_a3').reset_index() countries_rank['count_log'] = np.log(countries_rank['count']) countries_rank['rank'] = countries_rank['count'].rank() print(countries_rank.T)
这段代码的作用是:
1. 使用 pycountry 库中的 countries 对象创建一个字典 country_dict,其中 alpha_2 作为键,alpha_3 作为值。
2. 使用 pandas 库的 DataFrame 函数将 df 数据框中 country 列的计数结果转置并删除值为 'NONE' 的行,然后使用 country_dict 将 alpha_2 转换为 alpha_3,并将列名 'country' 改为 'count',最终得到一个新的数据框 countries。
3. 使用 pandas 库的 rename_axis 和 reset_index 函数将 countries 转置后的行索引命名为 'iso_a3',并将数据框中的 'count' 列取对数并命名为 'count_log',将 'count' 列的排名命名为 'rank',最终得到一个新的数据框 countries_rank。
4. 将 countries_rank 重新转置并打印输出。
阅读全文