假设我有一个dataframe,df,由两个对象组成的类,S,一组与它们相关联的协调器,X和Y,以及一个在那里测量的值V。
例如,dataframe如下所示:
S X Y V
0 3 3 1
0 4 3 2
1 6 0 1
1 3 3 8我想知道哪些命令允许我将与类X和Y坐标相关联的S分组到一个新的binning中。在这张新图片中,V的新值应该是每个类S的bin中值的总和。
例如,假设这个协调系统最初在X和Y中分别被绑定在0到10之间。我想把它放在0到2之间。这意味着:
0 < X <= 5,0 < Y <= 5在旧绑定中构成值0;6 < x <= 10,6 < y <= 10在旧绑定中构成值1;F 221
编辑:
例如,考虑Dataframe df
X = 3和Y = 3。从0 < X <= 5和0 < Y <= 5开始,这属于bin X = 4 2和Y = 3。由于(0,0).0 < X <= 5和0 < Y <= 5,因此它们在相同的bin中被观察到,并且属于S类,它们是沿着列V添加的。这给出了一个合并行,X=0, Y=0, V = 1+2 =3X = 6和Y = 0。由于(1,0)6 < X <= 10和0 < Y <= 5,因此属于bin X= 3和Y = 3。由于0 < X <= 5和0 < Y <= 5,这属于bin (0,0)。但是,由于元素属于S=1类,所以没有添加到任何东西中,因为我们只在共享类之间添加.。
然后,产出应是:
S X Y V
0 0 0 3
0 1 0 1
1 0 0 8为了实现这一点,我必须使用哪些命令?
发布于 2020-06-04 11:19:11
这应该能起作用:
data.loc[data['X'] <= 5, 'X'] = 0
data.loc[data['X'] > 5, 'X'] = 1
data.loc[data['Y'] <= 5, 'Y'] = 0
data.loc[data['Y'] > 5, 'Y'] = 1
data = data.groupby(['S', 'X', 'Y']).sum().reset_index()对于您的示例,输出是:
S X Y V
0 0 0 0 3
1 1 0 0 8
2 1 1 0 1我发现this answer很有帮助。
https://stackoverflow.com/questions/62190062
复制相似问题