如果数据帧具有不同的大小,则将第一个数据帧的列分配给第二个数据帧

时间:2017-06-24 22:00:24

标签: pandas

假设我有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列是名称,而不是像数字那样排序。我怎么能在熊猫中做到这一点?

1 个答案:

答案 0 :(得分:1)

默认情况下,首先在df1中为NA分配一列。接下来df1的每一行获取id的{​​{1}}值,并查看row id中的temp是否相同。如果它返回非空,则将dataframe的相应行分配给从df1返回的第一个值。您可以尝试以下操作:( np指的是numpy

temp