PANDAS:在不同DF中乘以值时得到NaN

时间:2020-04-06 00:21:35

标签: python pandas

由于以下操作,我得到了NaN:

df = pd.DataFrame(data={'Y':['A','B','C'],'X':[1,2,3]})
df['X'] = df['X'].astype('float64')

df2 = pd.DataFrame(data={'Y':['A','B','C'],'X':[10,10,10]})
df2['X'] = df2['X'].astype('float64')

df['Z'] = df.loc[df['Y']=='B','X'] * df2.loc[df2['Y']=='C','X']

想法是分配整个新的“ Z”列。

该如何解决?

tks

2 个答案:

答案 0 :(得分:0)

您可能需要添加values

df.loc[df['Y']=='B','Z'] = df.loc[df['Y']=='B','X'].values * df2.loc[df2['Y']=='C','X'].values

df
   Y    X     Z
0  A  1.0   NaN
1  B  2.0  20.0
2  C  3.0   NaN

答案 1 :(得分:0)

我最终这样做了:

df['Z'] = 0
df['Z'] = df['Z'].apply(lambda x: df.loc[df['Y']=='B','X'] * df2.loc[df2['Y']=='C','X'].values)