我有一个具有不同返回的数据帧,看起来像:
0.2 -0.1 0.03 0.01
0.02 0.1 -0.1 -0.2
0.05 0.06 0.07 -0.07
0.03 -0.04 -0.04 -0.03
我有一个单独的数据帧,索引只在一列中返回:
0.01
0.015
-0.01
-0.02
我想做的基本上是将索引返回数据帧的每一行值与股票返回数据帧中每一列的每一个值相加(+(。
期望的结果看起来像:
0.21 -0.09
0.035 0.115
0.04 0.05
0.01 -0.06 etc etc
例如,通常在Matlab中,for循环会很简单,但在python中,索引会让我陷入困境。我尝试了一个简单的for循环:
for i, j in df_stock_returns.iterrows():
df_new = df_stock_returns[i, j] + df_index_reuturns[j]
但这并没有真正奏效,任何帮助都值得感激!
假设您有
In [27]: df
Out[27]:
0 1 2 3
0 0.20 -0.10 0.03 0.01
1 0.02 0.10 -0.10 -0.20
2 0.05 0.06 0.07 -0.07
3 0.03 -0.04 -0.04 -0.03
和
In [28]: dfi
Out[28]:
0
0 0.010
1 0.015
2 -0.010
3 -0.020
你可以直接写
In [26]: pd.concat([df[c] + dfi[0] for c in df], axis=1)
Out[26]:
0 0 1 2
0 0.210 -0.090 0.040 0.020
1 0.035 0.115 -0.085 -0.185
2 0.040 0.050 0.060 -0.080
3 0.010 -0.060 -0.060 -0.050
在熊猫身上,你几乎不需要对单个细胞进行迭代。在这里,我只是对列进行了迭代,df[c] + dfi[0]
按元素添加了这两列。然后concat
和axis=1
(0=行,1=列(将所有内容连接到一个数据帧中。
我想最简单的方法是
for c in a.columns:
a[c] = a[c] + b
>>> a
0 1 2 3
0 0.210 -0.090 0.040 0.020
1 0.215 -0.085 0.045 0.025
2 0.190 -0.110 0.020 0.000
3 0.180 -0.120 0.010 -0.010
您可以简单地添加两个df
,如下所示
col1=[0.2,0.02]
col2=[-0.1,0.2]
col3=[0.01,0.015]
df1=pd.DataFrame(data=list(zip(col1, col2)),columns=['list1','list2'])
df2=pd.DataFrame({'list3':col3})
output = df1[:] + df2['list3'].values
df1[:]
提取所有列并将其发送到参考列df2['list3']