拆分,在pandas数据框中的两列中映射数据

时间:2016-12-29 07:46:46

标签: python pandas dictionary split

我想从数据框中分割两列数据,并使用此数据构建新列。

我的数据框是,

dfc = pd.DataFrame( {"A": ["GT:DP:RO:QR:AO:QA:GL", "GT:DP:RO:QR:AO:QA:GL", "GT:DP:RO:QR:AO:QA:GL", "GT:DP:GL", "GT:DP:GL"], "B": ["0/1:71:43:1363:28:806:-71.1191,0,-121.278", "0/1:71:43:1363:28:806:-71.1191,0,-121.278", "0/1:71:43:1363:28:806:-71.1191,0,-121.278", "1/1:49:-103.754,0,-3.51307", "1/1:49:-103.754,0,-3.51307"]} )

我希望名为GT, DP, RO, QR, AO, QA, GL的各列具有列B

中的值

我想生成输出, enter image description here

我们可以使用a = df.A.str.split(":", expand = True)b = df.B.str.split(":", expand = True)拆分两列,以获得两个单独的数据框。这些可以与c = pd.merge(a, b, left_index = True, right_index = True)合并以获取所有需要的数据。但是,不是按照预期的格式。 enter image description here

有什么建议吗?我认为更好的方法是在splitA列上使用B,然后创建一个dict列,其中A的值为关键字{{1}作为价值观。然后,此列可以转换为数据框。 感谢

2 个答案:

答案 0 :(得分:3)

在sep“OrderedDict”上创建数据框拆分的两个相关列的dict映射后,使用:保留订单,展平为{{1} }。

稍后将其提供给dataframe构造函数。

list

enter image description here

答案 1 :(得分:2)

  • 我要按':'拆分所有内容。但我有2列。如果我先stack,我会收到一系列文章,我可以更轻松地使用str.split
  • 我现在有一个分组系列,我可以按level=0分组,这是原始索引。
  • zipdict获取类似系列的结构,原始列A作为索引,B作为值。
  • unstack我完成了。
gb = dfc.stack().str.split(':').groupby(level=0)
gb.apply(lambda x: dict(zip(*x))).unstack()

enter image description here