我有一个pandas数据框const myArray = [
{ id: 'a', label: 'A' },
{ id: 'b', label: 'B' },
...
];
,它有两列df
和sales
。我创建了按年份字典year
创建的销售字典,该字典按年份分组time_series_sales
,然后将该年度的所有销售额相加
df
我现在想要将# df =
+-------+------+
| sales | year |
+-------+------|
| 1980 | 0.4 |
| 1981 | 2.1 |
| 1980 | .... |
+-------+------+
time_series_sales = dict(df.groupby(['year'])['sales'].sum())
print(time_series_sales)
>>> {1980.0: 11.379999999999999, 1981.0: 35.77000000000001, ...
列除以sales
中相应的year
值。下面的代码有效,但使用了明确的for循环,所以它很慢。
time_series_sales
我希望我可以在这里使用一些pandas功能,或者使用for row,index in df.iterrows():
df.iloc[row,1] = df.iloc[row,1] / time_series_sales[df.iloc[row,0]]
将功能应用到.apply
来执行此操作,但我还没有能够做到这一点。像下面这样的东西会很棒。
df
但我只使用此代码获得df['sales'] = df['sales'] / time_series_sales[df['year']]
TypeError
那么,是否有一些方法可以在不使用显式for循环的情况下执行此操作,可能使用pandas函数/方法?