Python比较两个数据帧的列并生成匹配行的索引
我有两个数据帧Python比较两个数据帧的列并生成匹配行的索引,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据帧 ref_df = condition color 0 normal g 1 onesoil silver 2 sixsoil k 3 crack1 pink 4 crack2 tomato 5 crack3a lightcoral 6 crack3b indianred 7 cr
ref_df =
condition color
0 normal g
1 onesoil silver
2 sixsoil k
3 crack1 pink
4 crack2 tomato
5 crack3a lightcoral
6 crack3b indianred
7 crack4 orangered
8 intcon1 turquoise
9 intcon2 lightseagreen
10 modcont1 hotpink
11 modcont2 deeppink
test_df =
index
intcon1 71.046122
intcon2 70.925799
modcont1 70.061561
crack2 71.484572
crack3a 71.703785
crack3b 71.352460
crack4 72.214675
我想比较test_df和ref_df,并生成ref_df的结果。在上面的例子中,我想将test_df的索引与ref_df['condition']进行比较,并为匹配行生成ref_df['color']的结果。我想在一行代码中实现所有功能。
我现在的代码
color_df = expdf['color'].loc[expdf['condition'].isin(faultdf.index)]
上面的代码只是复制了expdf['color']的整个列。
我目前的产出:
0 g
1 silver
2 k
4 tomato
5 lightcoral
6 indianred
7 orangered
8 turquoise
9 lightseagreen
10 hotpink
11 deeppink
预期产量
8 turquoise
9 lightseagreen
10 hotpink
4 tomato
5 lightcoral
6 indianred
7 orangered
如何实现以上从一行代码 尝试使用:
color_df = expdf.loc[expdf['condition'].isin(faultdf.index), 'color']
你就快明白了,“颜色”应该在结尾
编辑:
对于数据帧的排序:
color_df = expdf[expdf['condition'].isin(faultdf.index)].set_index('condition').reindex(fault_df.index).reset_index()
尝试使用:
color_df = expdf.loc[expdf['condition'].isin(faultdf.index), 'color']
你就快明白了,“颜色”应该在结尾
编辑:
对于数据帧的排序:
color_df = expdf[expdf['condition'].isin(faultdf.index)].set_index('condition').reindex(fault_df.index).reset_index()
对成功了。但是如何改变顺序,使颜色列表与测试的顺序相同?我已经编辑了我的问题和我的预期输出。@我编辑了我的答案,请向上投票并接受它是否有效:PYes!成功了。但是如何改变顺序,使颜色列表与测试的顺序相同?我已经编辑了我的问题和我的预期结果。我编辑了我的答案,请向上投票并接受它是否有效:P