2024-04-26 22:22:16 发布
网友
我正在尝试将DataFrame1列a乘以DataFrame2列b
combineQueryandBookFiltered['pnlValue'] = np.multiply(combineQueryandBookFiltered['pnlValue'], df_fxrate['fx_rate'])
pnlValue列有许多数字,fx\u rate列只是一个数字。你知道吗
代码执行,但我的最终结果是大量的NaN。你知道吗
NaN
任何帮助都将不胜感激。你知道吗
嗨,伙计
为什么不能使用简单的列乘法?你知道吗
df['C'] = df['A'] * df['B']
正如所指出的,两个系列的乘法是基于它们的指数,很可能你的外汇汇率系列没有与pnlValue系列相同的指数。你知道吗
但由于您的fx\u率只有一个值,因此我建议将您的数据帧与标量相乘:
fx_rate = df_fxrate['fx_rate'].iloc[0] combineQueryandBookFiltered['pnlValue'] = combineQueryandBookFiltered['pnlValue'] * fx_rate
这可能是由于数据帧的索引。您需要使用df_fxrate['fx_rate'].values:
df_fxrate['fx_rate'].values
combineQueryandBookFiltered['pnlValue'] = np.multiply(combineQueryandBookFiltered['pnlValue'], df_fxrate['fx_rate'].values)
或更好:
combineQueryandBookFiltered['pnlValue']=combineQueryandBookFiltered['pnlValue']*df_fxrate['fx_rate'].values
我举个例子:
df1=pd.DataFrame(index=[1, 2]) df2=pd.DataFrame(index=[0]) df1['col1']=[1,1] print(df1) col1 1 1 2 1
df2['col1']=[1] print(df2) col1 0 1
print(np.multiply(df1['col1'],df2['col1'])) 0 NaN 1 NaN 2 NaN
如您所见,乘法是根据索引进行的
So you need something like this:
np.multiply(df1['col1'],df2['col1'].values)
或者
df1['col1']*df2['col1'].values
输出:
1 1 2 1 Name: 1, dtype: int64
如您所见,现在只使用df1['col1']系列索引
嗨,伙计
为什么不能使用简单的列乘法?你知道吗
正如所指出的,两个系列的乘法是基于它们的指数,很可能你的外汇汇率系列没有与pnlValue系列相同的指数。你知道吗
但由于您的fx\u率只有一个值,因此我建议将您的数据帧与标量相乘:
这可能是由于数据帧的索引。您需要使用
df_fxrate['fx_rate'].values
:或更好:
我举个例子:
如您所见,乘法是根据索引进行的
或者
输出:
如您所见,现在只使用df1['col1']系列索引
相关问题 更多 >
编程相关推荐