我有两个数据框:
df1:
| ID | PersonID | Sex |
|:--:|:--------:|:---:|
| 1 | 123 | M |
| 2 | 124 | F |
| 3 | 125 | F |
| 4 | 126 | F |
| 5 | 127 | M |
| 6 | 128 | M |
| 7 | 129 | F |
df2:
| ID | PersonID | Infected |
|:--:|:--------:|:--------:|
| 1 | 125 | True |
| 2 | 124 | False |
| 3 | 126 | False |
| 4 | 128 | True |
我想比较这两个数据框中的人员ID,如果不匹配人员ID,则将相应的Infected值插入df1和False中。理想情况下,输出如下所示:
df1:
| ID | PersonID | Sex | Infected |
|:--:|:--------:|:---:|:--------:|
| 1 | 123 | M | False |
| 2 | 124 | F | False |
| 3 | 125 | F | True |
| 4 | 126 | F | False |
| 5 | 127 | M | False |
| 6 | 128 | M | True |
| 7 | 129 | F | False |
我有一个for循环编码,它花费的时间太长,而且可读性不强。有一种有效的方法可以做到这一点吗?谢谢!
答案 0 :(得分:1)
一种方法是为df1['PersonID'].map()
提供一个索引为PersonID
并且值为Infected
的系列:
df1['Infected'] = df1['PersonID'].map(df2.set_index('PersonID')['Infected']).fillna(False)
答案 1 :(得分:0)
另一种方法是使用@WebFluxTest(SomeController.class)
<template>
...
<component1 ref='componentOne'>
...
</template>
<script>
Vue.component('component2', {
methods: {
c2method: function(){
this.$refs.componentOne.c1method();
}
}
});
</script>
或
pd.merge