我正在尝试将数据框1的列a乘以数据框2的列b。
combineQueryandBookFiltered['pnlValue'] = np.multiply(combineQueryandBookFiltered['pnlValue'], df_fxrate['fx_rate'])
pnlValue列有很多数字,而fx_rate列只是一个数字。
代码已执行,但最终结果以大量NaN
结尾。
任何帮助将不胜感激。
答案 0 :(得分:2)
-嗨,好极了,
您有不能使用简单列乘法的原因吗?
df['C'] = df['A'] * df['B']
如前所述,两个序列的相乘是基于它们的索引,并且您的fx_rate系列可能没有与pnlValue系列相同的索引。
但是由于您的fx_rate仅为一个值,因此建议您将数据帧乘以标量:
fx_rate = df_fxrate['fx_rate'].iloc[0]
combineQueryandBookFiltered['pnlValue'] = combineQueryandBookFiltered['pnlValue'] * fx_rate
答案 1 :(得分:2)
这可能是由于数据框的索引所致。您需要使用<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ph">
<TextView
android:id="@+id/phlevelinfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="30dp"
android:text="Displaying pH Level"
android:textSize="30sp"
tools:ignore="HardcodedText" />
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="30dp" />
</LinearLayout>
:
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
或
np.multiply(df1['col1'],df2['col1'].values)
输出:
df1['col1']*df2['col1'].values
如您现在所见,仅使用df1 ['col1']系列索引