【发布时间】:2019-01-05 11:24:11
【问题描述】:
df1 和 df2 两个相当大的数据框有许多带有浮点值的列。 df1和df2中相同的索引和列名,分别创建两个新的数据框simple_ret_df和log_ret_df,操作如下:
-
(1 - df1 / df2)。假设这个新数据框是simple_ret_df -
ln(df1 / df2)。假设这个新数据框是log_ret_df
如果数据帧df1 或df2 中的任何条目丢失\nan\0,则计算数据帧中的对应条目应为nan。示例数据帧df1 和df2 可以如下生成
import numpy as np
import pandas as pd
df1 = pd.DataFrame(10*(2+np.random.randn(500, 3)), columns=list('ABC'))
df2 = pd.DataFrame(10*(2+np.random.randn(500, 3)), columns=list('CDA'))
df1.drop(df1.index[[1, 4, 284, 354, 498]], inplace=True)
df2.drop(df2.index[[0, 98, 159]], inplace=True)
df1.loc[2, 'B'] = np.nan
df1.loc[5, 'C'] = np.nan
df1.loc[3, 'A'] = np.nan
df2.loc[5, 'C'] = np.nan
df2.loc[1, 'D'] = np.nan
df2.loc[2, 'A'] = np.nan
示例输入数据帧df1 和df2 如下:
df1.head()
A B C
0 14.0 31.3 35.5
2 24.2 NaN 27.6
3 NaN 13.1 16.0
5 28.2 8.8 NaN
6 17.7 18.0 7.9
df2.head()
C D A
1 15.1 NaN 27.0
2 20.9 29.4 NaN
3 27.8 29.7 22.9
4 19.0 13.5 21.0
5 NaN 21.4 12.0
对应的样本输出数据帧simple_ret_df和log_ret_df如下:
simple_ret_df.head(6)
A B C D
0 NaN NaN NaN NaN
1 NaN NaN NaN NaN
2 NaN NaN -0.3206 NaN
3 NaN NaN 0.4245 NaN
4 NaN NaN NaN NaN
5 -0.4750 NaN NaN NaN
log_ret_df.head(6)
A B C D
0 NaN NaN NaN NaN
1 NaN NaN NaN NaN
2 NaN NaN 0.2781 NaN
3 NaN NaN -0.5524 NaN
4 NaN NaN NaN NaN
5 0.3887 NaN NaN NaN
【问题讨论】:
-
你能添加一个输出的例子吗?此外,操作是在特定列集之间或跨所有列。
-
另外,操作应该什么时候执行?何时使用 (1 - df1 / df2) 以及何时使用 ln(df1 / df2)?
-
@Jorge 为延迟和混乱道歉。我已经澄清了文本并添加了示例输入和相应的输出。
-
我下面的回答解决了你的问题吗?
-
@Jorge 不是真的。
标签: python-2.7 dataframe outer-join quantitative-finance