为每个唯一项目创建一个唯一项目的 df 和另一列的最大值
creating a df of unique items and the max value of another column for each unique item
我有一个看起来像这样的 DataFrame:
地点|大学 |领域 |学生人数
|纽约 |纽约大学 |时尚 |女 | 1000
|纽约 |纽约大学 |时尚 |男 | 500 |
|纽约 |纽约大学 |反恐精英 |女 | 300 |
|纽约 |纽约大学 |反恐精英 |男 |3050 |
|纽约 |纽约大学 |简介 |女 | 350 |
|纽约 |纽约大学 |简介 |男 | 400 |
|德州 |得克萨斯州 |时尚 |女 | 600 |
|德州 |得克萨斯州 |时尚 |男 | 100 |
|德州 |得克萨斯州 |反恐精英 |女 | 500 |
|德州 |得克萨斯州 |反恐精英 |男性 |5050 |
|德州 |得克萨斯州 |简介 |女 | 650 |
|德州 |得克萨斯州 |简介 |男 | 700 |
仅使用 Pandas,我需要找到所有独特的研究领域,然后为每个研究领域找到学生最多的州:
|领域 |地点 |学生人数|
|时尚 |纽约 | 1500 |
|反恐精英 |德州 | 5550 |
|简介 |德州 |第1350章|
我知道我们必须按字段分组,但我无法获得学生总数,然后是学生人数最多的那个(第 2 列和第 3 列)。我试过 agg 和 count 但我可能以错误的方式使用它们。
请帮助指导我。
TIA!
你可以做到
>>> df = df.groupby(['Place','Field'])['Number of students'].sum().reset_index()
Place Field Number of students
0 New York CS 500
1 New York Fashion 1500
2 Texas Bio 200
3 Texas CS 700
>>> df.sort_values('Number of students',ascending=False)
Place Field Number of students
1 New York Fashion 1500
3 Texas CS 700
0 New York CS 500
2 Texas Bio 200
df.groupby(['State', 'Place', 'Field']).sum('Nos').groupby('Field').max()
我有一个看起来像这样的 DataFrame:
地点|大学 |领域 |学生人数
|纽约 |纽约大学 |时尚 |女 | 1000
|纽约 |纽约大学 |时尚 |男 | 500 |
|纽约 |纽约大学 |反恐精英 |女 | 300 |
|纽约 |纽约大学 |反恐精英 |男 |3050 |
|纽约 |纽约大学 |简介 |女 | 350 |
|纽约 |纽约大学 |简介 |男 | 400 |
|德州 |得克萨斯州 |时尚 |女 | 600 |
|德州 |得克萨斯州 |时尚 |男 | 100 |
|德州 |得克萨斯州 |反恐精英 |女 | 500 |
|德州 |得克萨斯州 |反恐精英 |男性 |5050 |
|德州 |得克萨斯州 |简介 |女 | 650 |
|德州 |得克萨斯州 |简介 |男 | 700 |
仅使用 Pandas,我需要找到所有独特的研究领域,然后为每个研究领域找到学生最多的州:
|领域 |地点 |学生人数|
|时尚 |纽约 | 1500 |
|反恐精英 |德州 | 5550 |
|简介 |德州 |第1350章|
我知道我们必须按字段分组,但我无法获得学生总数,然后是学生人数最多的那个(第 2 列和第 3 列)。我试过 agg 和 count 但我可能以错误的方式使用它们。 请帮助指导我。 TIA!
你可以做到
>>> df = df.groupby(['Place','Field'])['Number of students'].sum().reset_index()
Place Field Number of students
0 New York CS 500
1 New York Fashion 1500
2 Texas Bio 200
3 Texas CS 700
>>> df.sort_values('Number of students',ascending=False)
Place Field Number of students
1 New York Fashion 1500
3 Texas CS 700
0 New York CS 500
2 Texas Bio 200
df.groupby(['State', 'Place', 'Field']).sum('Nos').groupby('Field').max()