我有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')
A B
0 37 12
1 8 9
2 11 5
另外,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 B
1 16 1
2 12 7
2 12 7
2 12 7
2 12 7
2 12 7
2 12 7
2 12 7
我需要按索引将第二个数据帧的'A'
中的值重新分配给第一个数据帧col '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
答案 0 :(得分:1)
如果我正确解释了您的问题,那么您正在寻找在rand_df2
上附加新行的方法。这些行将从rand_df1
中选择,这些行的索引未出现在rand_df2
中。正确吗?
这可以解决问题:
rand_df2_new = rand_df2.append(rand_df1[~rand_df1.index.isin(rand_df2.index)]).sort_index()
答案 1 :(得分:0)
感谢Yik Yi的解决方案:
sheet.cell(column='Action', row=sheet.max_row+1, value=action)
rand_df2.combine_first(rand_df1)
此外,在一个数据帧中用额外的列对此进行了测试,这在第二个数据帧和向后的情况下不会出现。效果很好。