Groupby pandas 数据框基于另一个 df 的值
Groupby pandas data-frame based on values from another df
我有一个数据框,其中我保留了所有相关属性,另一个数据框具有我想根据其对第一个 df 进行分组的属性。
我知道如果你把一个系列(一列)作为参数,你可以按数据框分组,如果你放一个数据框,你会得到一个错误。
ValueError: Grouper for '<class 'pandas.core.frame.DataFrame'>' not 1-dimensional
我知道我可以将列连接到原始数据框,但我不想这样做,除非没有其他解决方案。
df.groupby([sorted_team_names]).ngroup()
这是我的代码。 sorted_team_names 是一个有两列的 df,而且它与 df 具有相同的索引。
这是一个相当笼统的问题,我不确定您是否需要数据样本。
一种方法是分别按列分组:
df1 = pd.DataFrame({'a':[1,2,2,1], 'b':[1,2,2,1]})
print (df1)
a b
0 1 1
1 2 2
2 2 2
3 1 1
df2 = pd.DataFrame({'c':[1,2,3,7]})
print (df2)
c
0 1
1 2
2 3
3 7
df3 = df2.groupby([df1['a'], df1['b']]).sum()
print (df3)
c
a b
1 1 8
2 2 5
...但是索引必须在两个 DataFrame 之间匹配:
df1 = pd.DataFrame({'a':[1,2,2,1], 'b':[1,2,2,1]}, index=[2,5,6,8])
print (df1)
a b
2 1 1 <- matched only 2 index
5 2 2
6 2 2
8 1 1
df2 = pd.DataFrame({'c':[1,2,3,7]})
print (df2)
c
0 1
1 2
2 3
3 7
df3 = df2.groupby([df1['a'], df1['b']]).sum()
print (df3)
c
a b
1.0 1.0 3
我有一个数据框,其中我保留了所有相关属性,另一个数据框具有我想根据其对第一个 df 进行分组的属性。
我知道如果你把一个系列(一列)作为参数,你可以按数据框分组,如果你放一个数据框,你会得到一个错误。
ValueError: Grouper for '<class 'pandas.core.frame.DataFrame'>' not 1-dimensional
我知道我可以将列连接到原始数据框,但我不想这样做,除非没有其他解决方案。
df.groupby([sorted_team_names]).ngroup()
这是我的代码。 sorted_team_names 是一个有两列的 df,而且它与 df 具有相同的索引。
这是一个相当笼统的问题,我不确定您是否需要数据样本。
一种方法是分别按列分组:
df1 = pd.DataFrame({'a':[1,2,2,1], 'b':[1,2,2,1]})
print (df1)
a b
0 1 1
1 2 2
2 2 2
3 1 1
df2 = pd.DataFrame({'c':[1,2,3,7]})
print (df2)
c
0 1
1 2
2 3
3 7
df3 = df2.groupby([df1['a'], df1['b']]).sum()
print (df3)
c
a b
1 1 8
2 2 5
...但是索引必须在两个 DataFrame 之间匹配:
df1 = pd.DataFrame({'a':[1,2,2,1], 'b':[1,2,2,1]}, index=[2,5,6,8])
print (df1)
a b
2 1 1 <- matched only 2 index
5 2 2
6 2 2
8 1 1
df2 = pd.DataFrame({'c':[1,2,3,7]})
print (df2)
c
0 1
1 2
2 3
3 7
df3 = df2.groupby([df1['a'], df1['b']]).sum()
print (df3)
c
a b
1.0 1.0 3