Python 按索引重新分配数据帧值

Python 按索引重新分配数据帧值,python,pandas,dataframe,Python,Pandas,Dataframe,我有rand_df1: np.random.seed(1) rand_df1 = pd.DataFrame(np.random.randint(0, 40, size=(3, 2)), columns=list('AB')) print(rand_df1, '\n') 另外,rand_df2: rand_df2 = pd.DataFrame(np.random.randint(0, 40, size=(3, 2)), columns=list('AB')) rand_df2 = rand_df

我有rand_df1:

np.random.seed(1)
rand_df1 = pd.DataFrame(np.random.randint(0, 40, size=(3, 2)), columns=list('AB'))
print(rand_df1, '\n')
另外,rand_df2:

rand_df2 = pd.DataFrame(np.random.randint(0, 40, size=(3, 2)), columns=list('AB'))
rand_df2 = rand_df2.loc[rand_df2.index.repeat(rand_df2['B'])]
print(rand_df2, '\n')
我需要按索引将第一个数据帧列
'A'
中的值与第二个数据帧的
'A'
中的值重新分配。
rand_df1的所需输出

    A  B
0  37  12
1  16  1
2  12  7
2  12  7
2  12  7
2  12  7
2  12  7
2  12  7
2  12  7

如果我正确地解释了您的问题,您希望在
rand_df2
上追加新行。这些行将从
rand_df1
中选择,它们的索引未出现在
rand_df2
中。对吗

这将实现以下目的:

rand_df2_new = rand_df2.append(rand_df1[~rand_df1.index.isin(rand_df2.index)]).sort_index()

感谢Henry Yik的解决方案:

rand_df2.combine_first(rand_df1)

另外,在一个数据帧中用额外的列测试了这一点,在第二个数据帧和向后的情况下,这不会出现。它工作得很好。

rand\u df2。先合并(rand\u df1)
。感谢您的解决方案。使用
rand_df1
中的附加列对其进行了测试,该列未出现在
rand_df2
中。用NaN填充额外col3的值。
rand_df2_new = rand_df2.append(rand_df1[~rand_df1.index.isin(rand_df2.index)]).sort_index()
rand_df2.combine_first(rand_df1)
    A  B
0  37  12
1  16  1
2  12  7
2  12  7
2  12  7
2  12  7
2  12  7
2  12  7
2  12  7