Joh*_*ohn 2 python pandas pandas-groupby
我有一个数据框,列出了不同的团队(绿色、蓝色、黄色、橙色、[有数百个团队]等),并列出了他们每月的收入。我希望能够根据收入创建前 10 名团队的列表,然后将其输入到 groupby 语句中,以便我在处理各种数据帧时只查看这些团队。这些是我创建的但我遇到问题的语句:
Rev = df['Revenue'].head(10) and I have also used Rev = df.nlargest(10,['Revenue'])
grpby = df.groupby([df['team'].isin(rev), 'team'], as_index=False)['Revenue'].sum().sort_values('Revenue', ascending=False).reset_index()
Run Code Online (Sandbox Code Playgroud)
*编辑:导致此请求的其他代码:*编辑:df = pd.read_excel('c:/Test.xlsx',sheet_name =“Sheet1”,index_col = 'Date',parse_dates = True)
*编辑:df = pd.DataFrame(df)
我可以使 groupby 语句起作用,但我无法将“Rev”列表输入到限制/过滤要查看的组的 groupby 语句中。
另外,当使用 groupby 语句创建数据框时,如何添加回未分组的其他列?例如,在上面的声明中,我尝试使用“团队”和“收入”,但如果我还想添加其他列,例如(“位置”或“团队负责人”),添加更多列的语法是什么?
*通过 Excel 文件编辑示例输入:Teams Revenue Green 10 Blue 15 Red 20 Orange 5 在上面的示例中,我想使用一个语句,该语句获取前三个并保存为列表,然后将其输入到 groupby 语句中。现在看起来我还没有填写实际的数据框?*从控制台:空 DataFrame 列:[团队,收入] 索引:[]
第一步需要过滤boolean indexing:
样本:
df = pd.DataFrame({'Teams': ['Green', 'Blue', 'Red', 'Orange', 'Green', 'Blue', 'Grey', 'Purple'],
'Revenue': [18, 15, 20, 5, 10, 15, 2, 5],
'Location': ['A', 'B', 'V', 'G', 'A', 'D', 'B', 'C']})
print (df)
Teams Revenue Location
0 Green 18 A
1 Blue 15 B
2 Red 20 V
3 Orange 5 G
4 Green 10 A
5 Blue 15 D
6 Grey 2 B
7 Purple 5 C
Run Code Online (Sandbox Code Playgroud)
首先获取最高值并选择列Teams:
Rev = df.nlargest(3,'Revenue')['Teams']
print (Rev)
2 Red
0 Green
1 Blue
Name: Teams, dtype: object
Run Code Online (Sandbox Code Playgroud)
然后需要首先过滤boolean indexing:
print (df[df['Teams'].isin(Rev)])
Teams Revenue Location
0 Green 18 A
1 Blue 15 B
2 Red 20 V
4 Green 10 A
5 Blue 15 D
df1 = (df[df['Teams'].isin(Rev)]
.groupby('Teams',as_index=False)['Revenue']
.sum()
.sort_values('Revenue', ascending=False))
print (df1)
Teams Revenue
0 Blue 30
1 Green 28
2 Red 20
Run Code Online (Sandbox Code Playgroud)
如果需要输出多列,则需要为每一列设置聚合函数,例如:
df2 = (df[df['Teams'].isin(Rev)]
.groupby('Teams',as_index=False)
.agg({'Revenue':'sum', 'Location': ', '.join, 'Another col':'mean'}))
print (df2)
Teams Revenue Location
0 Blue 30 B, D
1 Green 28 A, A
2 Red 20 V
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6237 次 |
| 最近记录: |