减去熊猫中每个组项目的独特价值
我有一个具有唯一值(DF_VALUES)的数据框,我想在另一个dataframe(df)的一列中从所有行中减去
>>> df_values
Id value
0 1 2
1 2 3
2 3 2
>>> df
Id T_air
0 1 2
1 1 4
2 1 2
3 2 3
4 2 4
5 2 3
6 3 4
我可以通过定义这样的函数来做到这一点:
def conv(x, y, p):
if y == 1:
return x-p[0]
elif y == 2:
return x-p[1]
elif y == 3:
return x-p[2]
df['norm']=df.apply(lambda x : conv(x['T_air'], x['Id'],df_value['value']), axis=1)
因此,结果是:
>>> df
Id T_air norm
0 1 2 0
1 1 4 2
2 1 2 0
3 2 3 0
4 2 4 1
5 2 3 0
6 3 4 2
但是由于我有很多我想找到一种实现此目的的更简单方法。 任何想法都会有所帮助:)
I have a dataframe with unique values (df_values) that I want to subtract from all rows in a column of another dataframe (df)
>>> df_values
Id value
0 1 2
1 2 3
2 3 2
>>> df
Id T_air
0 1 2
1 1 4
2 1 2
3 2 3
4 2 4
5 2 3
6 3 4
I can do it by defining a function like this:
def conv(x, y, p):
if y == 1:
return x-p[0]
elif y == 2:
return x-p[1]
elif y == 3:
return x-p[2]
df['norm']=df.apply(lambda x : conv(x['T_air'], x['Id'],df_value['value']), axis=1)
So the result would be:
>>> df
Id T_air norm
0 1 2 0
1 1 4 2
2 1 2 0
3 2 3 0
4 2 4 1
5 2 3 0
6 3 4 2
But since I have so many groupby items I would like to find a simpler way to achieve this.
Any Ideas would help :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用 使用代码> series.map :
Use
Series.sub
with mapping values bySeries.map
:您可以使用 ,您不需要
groupby
:输出:
You can vectorize your by using
map
, you do not need togroupby
:output: