Numpy,将dataframe乘以输出NaN的数字

2024-04-26 22:22:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将DataFrame1列a乘以DataFrame2列b

combineQueryandBookFiltered['pnlValue'] = np.multiply(combineQueryandBookFiltered['pnlValue'], df_fxrate['fx_rate'])

pnlValue列有许多数字,fx\u rate列只是一个数字。你知道吗

代码执行,但我的最终结果是大量的NaN。你知道吗

任何帮助都将不胜感激。你知道吗


Tags: dfratenp数字nanmultiplyfx代码执行
2条回答

嗨,伙计

为什么不能使用简单的列乘法?你知道吗

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

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']系列索引

相关问题 更多 >