假设我有2个数据框:
df1 = pd.DataFrame(np.arange(0,301),columns = ['id'])
df2 = pd.DataFrame(np.arange(200,387),columns = ['id'])
df1['2'] = np.random.randint(0,2,301)
df2['2'] = np.random.randint(0,2,187)
然后我将id从第二个数据帧匹配到第一个并创建第三个df:
temp = df2.loc[df2['id'].isin(df1['id'])]
然后我计算了一些值:
def values_14(row):
if row['2'] == 1:
return 1
else:
return 0
temp['val'] = temp.apply(lambda row: values_14(row),axis = 1)
我的问题是:如何将数据框val
的{{1}}列中的值分配到第一个数据框(如果第一个数据框中的temp
不匹配到id
的{{1}},然后在一般中指定NA)?一般来说,我指的是这种情况,例如id
列是名称,而不是像数字那样排序。我怎么能在熊猫中做到这一点?
答案 0 :(得分:1)
默认情况下,首先在df1
中为NA
分配一列。接下来df1
的每一行获取id
的{{1}}值,并查看row
id
中的temp
是否相同。如果它返回非空,则将dataframe
的相应行分配给从df1
返回的第一个值。您可以尝试以下操作:( np指的是numpy )
temp