由于以下操作,我得到了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
答案 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)