python - 如何合并 itertools 生成的数据框和熊猫中的普通数据框?
问题描述
我itertools
使用以下代码生成了一个数据框,其中包含所有可能的两种心电图 (ECG) 导联组合
source = [ 'I-s', 'II-s', 'III-s', 'aVR-s', 'aVL-s', 'aVF-s', 'V1-s', 'V2-s', 'V3-s', 'V4-s', 'V5-s', 'V6-s', 'V1Long-s', 'IILong-s', 'V5Long-s', 'Information-s' ]
target = [ 'I-t', 'II-t', 'III-t', 'aVR-t', 'aVL-t', 'aVF-t', 'V1-t', 'V2-t', 'V3-t', 'V4-t', 'V5-t', 'V6-t', 'V1Long-t', 'IILong-t', 'V5Long-t', 'Information-t' ]
from itertools import product
test = pd.DataFrame(list(product(source, target)), columns=['source', 'target'])
测试数据框包含 256 行/行,包含所有两种可能的组合。
每个组合的值都为零,如下所示
test['value'] = 0
测试 df 如下所示:
我有另一个名为的数据框diagramDF
,其中包含value
列非零的组合。比数据框diagramDF
小得多test
。
source target value
0 I-s II-t 137
1 II-s I-t 3
2 II-s III-t 81
3 II-s IILong-t 13
4 II-s V1-t 21
5 III-s II-t 3
6 III-s aVF-t 19
7 IILong-s II-t 13
8 IILong-s V1Long-t 353
9 V1-s aVL-t 11
10 V1Long-s IILong-t 175
11 V1Long-s V3-t 4
12 V1Long-s aVF-t 4
13 V2-s V3-t 8
14 V3-s V2-t 6
15 V3-s V6-t 2
16 V5-s aVR-t 5
17 V6-s III-t 4
18 aVF-s III-t 79
19 aVF-s V1Long-t 235
20 aVL-s I-t 1
21 aVL-s aVF-t 16
22 aVR-s aVL-t 1
请注意,前两列source
和target
具有相同的符号
我试图用 usingtest
的非零值替换数据帧的零值,如下所示:diagramDF
merge
df = pd.merge(test, diagramDF, how='left', on=['source', 'target'])
但是,我收到一条错误消息,通知我:
ValueError:列标签“源”不是唯一的。对于多索引,标签必须是一个元组,其元素对应于每个级别
有什么我做错了吗?有没有更有效和快速的方法来做到这一点?
解决方案
可能有帮助,
pd.merge(test, diagramDF, how='left', on=['source', 'target'],right_index=True,left_index=True)
推荐阅读
- r - 仅绘制平滑线?
- angular - 如何在 Mat-table angular 5 中设置序列号
- annotations - 如何识别itext中的“回复”注释
- php - 如何在 jquery 脚本中嵌入 PHP?
- jquery - 如果我选择 1 月作为月份,2018 年作为年份,那么只显示 2018 年 1 月的完整日历
- postgresql - 从链接字符串中提取变量值
- php - Paytabs 支付网关 Api 无法正常工作
- node.js - 找不到模块'dialogflow-fulfillment'
- android - 如何在 Android.MK 文件中使用 -assumenosideeffects 标志启用 proguard
- c# - 读取值自动更新 UWA/UWP