首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫数据采集:多维绑定

熊猫数据采集:多维绑定
EN

Stack Overflow用户
提问于 2020-06-04 08:26:04
回答 1查看 146关注 0票数 1

假设我有一个dataframe,df,由两个对象组成的类,S,一组与它们相关联的协调器,XY,以及一个在那里测量的值V

例如,dataframe如下所示:

代码语言:javascript
复制
S X Y V
0 3 3 1
0 4 3 2
1 6 0 1
1 3 3 8

我想知道哪些命令允许我将与类XY坐标相关联的S分组到一个新的binning中。在这张新图片中,V的新值应该是每个类S的bin中值的总和。

例如,假设这个协调系统最初在XY中分别被绑定在0到10之间。我想把它放在0到2之间。这意味着:

  • 值来自0 < X <= 50 < Y <= 5在旧绑定中构成值0;
  • 值来自6 < x <= 106 < y <= 10在旧绑定中构成值1;

F 221

编辑:

例如,考虑Dataframe df

  1. Row 1有X = 3Y = 3。从0 < X <= 50 < Y <= 5开始,这属于bin X = 4 2和Y = 3。由于(0,0).
  2. Since Row 1和2也属于bin 0 < X <= 50 < Y <= 5,因此它们在相同的bin中被观察到,并且属于S类,它们是沿着列V添加的。这给出了一个合并行,X=0, Y=0, V = 1+2 =3
  3. Row 3有X = 6Y = 0。由于(1,0)
  4. Row 4有6 < X <= 100 < Y <= 5,因此属于bin X= 3Y = 3。由于0 < X <= 50 < Y <= 5,这属于bin (0,0)。但是,由于元素属于S=1类,所以没有添加到任何东西中,因为我们只在共享类之间添加.

然后,产出应是:

代码语言:javascript
复制
S X Y V
0 0 0 3
0 1 0 1
1 0 0 8

为了实现这一点,我必须使用哪些命令?

EN

回答 1

Stack Overflow用户

发布于 2020-06-04 11:19:11

这应该能起作用:

代码语言:javascript
复制
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()

对于您的示例,输出是:

代码语言:javascript
复制
   S  X  Y  V
0  0  0  0  3
1  1  0  0  8
2  1  1  0  1

我发现this answer很有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62190062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档