我有如下数据:
index client year value
1 A 2011 5
2 A 2012 10
...
8 A 2018 7
9 B 2011 14
10 B 2012 54
...
... Z 2011 5我需要使用与年份相关的值来乘以这些值。我有一个系列如下:
2011 2
2012 2.5
2013 3
2014 3.5
...
2018 5.5我需要所有年份的数值乘以这些年相依的数值。它看起来就像
index client year value
1 A 2011 10
2 A 2012 25
...etc现在,我编写了一个循环来完成这个任务,但是它远没有优雅和高效。如何高效、优雅地完成这一任务?
发布于 2018-10-30 16:22:11
使用reindex
df.value*=s.reindex(df.year).values
df
Out[44]:
index client year value
0 1 A 2011 10.0
1 2 A 2012 25.0发布于 2018-10-30 16:22:16
如果您的系列如下所示:
>>> s
0
2011 2.0
2012 2.5
2013 3.0
2014 3.5
2018 5.5
Name: 1, dtype: float64然后您可以使用map来完成这个任务。
df['value'] = df['value'].mul(df.year.map(s))你得到的是:
>>> df
index client year value
0 1 A 2011 10.0
1 2 A 2012 25.0
2 8 A 2018 38.5
3 9 B 2011 28.0
4 10 B 2012 135.0
....https://stackoverflow.com/questions/53068650
复制相似问题