首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从另一个数据中减去一个数据?

如何从另一个数据中减去一个数据?
EN

Stack Overflow用户
提问于 2013-02-18 22:30:32
回答 2查看 25.7K关注 0票数 6

首先,让我来摆好舞台。

我从一个pandas dataframe klmn开始,它看起来如下所示:

代码语言:javascript
运行
复制
In [15]: klmn
Out[15]: 
    K  L         M   N
0   0  a -1.374201  35
1   0  b  1.415697  29
2   0  a  0.233841  18
3   0  b  1.550599  30
4   0  a -0.178370  63
5   0  b -1.235956  42
6   0  a  0.088046   2
7   0  b  0.074238  84
8   1  a  0.469924  44
9   1  b  1.231064  68
10  2  a -0.979462  73
11  2  b  0.322454  97

接下来,我根据'K‘列中的值将klmn拆分为两个数据流,klmn0klmn1

代码语言:javascript
运行
复制
In [16]: k0 = klmn.groupby(klmn['K'] == 0)
In [17]: klmn0, klmn1 = [klmn.ix[k0.indices[tf]] for tf in (True, False)]
In [18]: klmn0, klmn1
Out[18]: 
(   K  L         M   N
0  0  a -1.374201  35
1  0  b  1.415697  29
2  0  a  0.233841  18
3  0  b  1.550599  30
4  0  a -0.178370  63
5  0  b -1.235956  42
6  0  a  0.088046   2
7  0  b  0.074238  84,
     K  L         M   N
8   1  a  0.469924  44
9   1  b  1.231064  68
10  2  a -0.979462  73
11  2  b  0.322454  97)

最后,计算M列在klmn0中的平均值,并按L列中的值分组:

代码语言:javascript
运行
复制
In [19]: m0 = klmn0.groupby('L')['M'].mean(); m0
Out[19]: 
L
a   -0.307671
b    0.451144
Name: M

现在,我的问题是,如何从<代码>D35列中的klmn1列中从d34m0 >列中减去 M L 列中的值?E 232(我的意思是,m0['a']从klmn1中每一行的M列中减去,D36在L列中也是如此。)

可以想象,这样做的方式是将M列中的klmn1列中的值替换为新值(在从m0中减去值之后)。或者,您可以想象这样做的方式可以使klmn1保持不变,而是生成一个新的带有更新的M列的dataframe klmn11。我对这两种方法都感兴趣。

EN

Stack Overflow用户

回答已采纳

发布于 2013-02-18 22:57:15

如果将klmn1数据的索引重置为L列的索引,则数据将自动将索引与从中减去的任何序列对齐:

代码语言:javascript
运行
复制
In [1]: klmn1.set_index('L')['M'] - m0
Out[1]:
L
a    0.777595
a   -0.671791
b    0.779920
b   -0.128690
Name: M
票数 6
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14946494

复制
相关文章

相似问题

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