理解级别 =0 和 group_keys

use*_*565 7 python dataframe pandas

我正在使用 pandas groupby 并为 ex 查找大小:

dd=df.groupby(['value','year','team']).size()
Run Code Online (Sandbox Code Playgroud)

它给了我输出:

value  year  team
0      2000  B       2
1      2000  A       2
       2001  A       1
2      2001  B       1
3      2001  A       2
Run Code Online (Sandbox Code Playgroud)

我的问题是什么是 level =0 和 group_keys(下面给出),它适用于分组数据帧 dd。

ddf3=dd.groupby(level=0,group_keys=False).apply(function).reset_index()
Run Code Online (Sandbox Code Playgroud)

is (level=0) 是分组数据帧 dd 中的“值”列。

请帮我。

小智 12

df.groupby(level=0)
Run Code Online (Sandbox Code Playgroud)

它指定 的第一个索引Dataframe。当您有多个索引并且您groupby只需要数据帧的多个索引中的一个索引时,我们将使用它。

它的意思是:

  • 级别 0 -> 第一个索引
  • 级别 1 -> 第二索引
  • 等等..

  • 可能值得指出的是,使用“level=-1”指定最右边或最外面的索引。 (4认同)

小智 5

在该级别groupby(),当你有多个指标,你想只使用一个数据帧的索引使用。例如:

df = pd.DataFrame([{'values':0,'year':2000,'team':'A'}, 
                   {'values':1,'year':2000,'team':'B'}, 
                   {'values':2,'year':2001,'team':'B'}
                  ])
df = df.groupby(['values','year','team']).size()
df
Run Code Online (Sandbox Code Playgroud)

输出:

values  year  team
0       2000  A       1
1       2000  B       1
2       2001  B       1
Run Code Online (Sandbox Code Playgroud)
df = df.groupby(level=1).size()
df
Run Code Online (Sandbox Code Playgroud)

输出:

year
2000    2
2001    1
Run Code Online (Sandbox Code Playgroud)