【发布时间】:2018-03-29 09:05:11
【问题描述】:
我想计算以下等式:
calc = value_a(2D) - (value_b(0D) + value_b(1D))/10000
value_a(2D) corresponds to type **a**, year **2D** and value **1.1275**
value_b(0D) corresponds to type **b**, year **0D** and value **0**
value_b(1D) corresponds to type **b**, year **1D** and value **0.125**
结果应该是
1.1274875
但是我不确定如何在我的循环中访问正确的数据?我想保留我的代码结构。
代码如下所示:
import pandas as pd
data = pd.read_csv('C:/Book1.csv').fillna('')
pd_date = pd.DatetimeIndex(data['date'].values)
data['date'] = pd_date
index_data = data.set_index('date')
for current_date in index_data.index.unique():
for index, row in index_data.iterrows():
if index == current_date:
for index2, row2 in index_data.iterrows():
if index2 == current_date:
if row['type'] in {'a', 'b'} and row2['type'] in {'a', 'b'}:
if row['year'] in {'0D','1D','2D'}:
print(row['value'])
数据如下所示:
date type year value 2015-02-09 a 2D 1.1275 2015-02-09 b 10M 58.125 2015-02-09 b 11M 68.375 2015-02-09 b 1M 3.345 2015-02-09 b 1W 0.89 2015-02-09 b 1Y 79.375 2015-02-09 b 2M 7.535 2015-02-09 b 2W 1.8 2015-02-09 b 3M 11.61 2015-02-09 b 3W 2.48 2015-02-09 b 4M 16.2 2015-02-09 b 5M 21.65 2015-02-09 b 6M 27.1 2015-02-09 b 7M 33.625 2015-02-09 b 8M 41.375 2015-02-09 b 9M 49.5 2015-02-09 b 0D 0 2015-02-09 b 1D 0.125
【问题讨论】:
-
你能再解释一下吗?尤其是 value_a 和 value_b 是什么以及它们来自哪里。
-
@cᴏʟᴅsᴘᴇᴇᴅ,非常感谢您的回答。我更新了描述。
-
'type'列与这里的事物有什么关系?这似乎完全是多余的,或者从您给出的示例中它与您的方程式的关系并不是很明显。编辑:换句话说,您似乎只是在选择与'year'、'2D'等对应的值。 -
@juanpa.arrivillaga,类型很重要,因为我的类型比 a 和 b 多。我想让数据提取更简单。我更新了上面的描述。
-
对。它仍然不明显。
value_b(2D)会是什么样子?您的示例不允许我推断与事物相关的逻辑。您的列还有哪些其他值?更准确地说,还有哪些其他的值组合,type 的具体用途是什么?请注意,我可以通过使用与'year'对应的'value'轻松获取您的号码