【发布时间】:2020-12-29 03:39:22
【问题描述】:
我正在处理大量数据,需要一种更有效的方式来执行以下操作:
rate = [0.03,0.02,0.01]
d = {'portfolio':['abc','de','xyz'], 'A':[0,1,2],'B':[3,4,5]}
df = pd.DataFrame(data=d)
+---+-----------+---+---+
| | portfolio | A | B |
+---+-----------+---+---+
| 0 | abc | 0 | 3 |
| 1 | de | 1 | 4 |
| 2 | xyz | 2 | 5 |
+---+-----------+---+---+
基本上我有几个费率需要贯穿每个费率方案。我需要将费率添加到最后 2 列
目前这是我拥有的代码:
import pandas as pd
rate = [0.03,0.02,0.01]
scenario_rate = pd.DataFrame()
for i in rate:
d = {'portfolio':['abc','def','xyz'], 'A':[0,1,2],'B':[3,4,5]}
df = pd.DataFrame(data=d)
y = df
y[y.columns[-2:]] += i
y['rate'] = i
scenario_rate = scenario_rate.append(y, ignore_index = True)
+---+-----------+------+------+------+
| | portfolio | A | B | rate |
+---+-----------+------+------+------+
| 0 | abc | 0.03 | 3.03 | 0.03 |
| 1 | def | 1.03 | 4.03 | 0.03 |
| 2 | xyz | 2.03 | 5.03 | 0.03 |
| 3 | abc | 0.02 | 3.02 | 0.02 |
| 4 | def | 1.02 | 4.02 | 0.02 |
| 5 | xyz | 2.02 | 5.02 | 0.02 |
| 6 | abc | 0.01 | 3.01 | 0.01 |
| 7 | def | 1.01 | 4.01 | 0.01 |
| 8 | xyz | 2.01 | 5.01 | 0.01 |
+---+-----------+------+------+------+
如何更有效地做到这一点?.. 或许没有 for 循环? 谢谢
【问题讨论】:
-
你从哪里得到的费率?是否在 DF 中?
-
它只是一个列表 .... rate = [0.03,0.02,0.01]
-
甚至不要这样做,
scenario_rate = scenario_rate.append(y, ignore_index = True)不要这样做。相反,使用一个列表,然后在最后使用pd.concatenate。虽然,总体上可能有更好的方法
标签: python pandas dataframe loops append