分裂,在大熊猫数据帧

分裂,在大熊猫数据帧

问题描述:

欲在两列数据从数据帧分割并使用该数据构造新的列的两列的地图数据。分裂,在大熊猫数据帧

我的数据帧,

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

有什么建议?我认为,更好的办法可以在两列AB,然后从A创建dict柱值作为重点,并作为B值来使用split。然后这个列可以转换为数据帧。 谢谢

+1

肯定在那里向我们展示你已经尝试什么可以帮助的情况。阅读http://*.com/help/how-to-ask – piRSquared

+0

@piRSquared希望编辑帮... – nilesh

使用OrderedDict创建于九月“:”数据框分割的两个有关柱,扁平的listdict映射后维持秩序。

饲料这对数据帧构造后。

from collections import OrderedDict 

L = dfc.apply(
    lambda x: OrderedDict(zip(x['A'].split(':'), x['B'].split(':'))), 1).tolist() 
pd.DataFrame(L) 

+0

@nilesh这是完全合理的进口和使用'OrderedDict'。这是一个更快的答案。我认为这也更合适。 – piRSquared

  • 我打算把所有东西都拆分为':'。但我有2列。首先,我得到一系列我可以更容易使用的系列str.split
  • 我现在有一个分割系列,我可以通过level=0这是最初的索引进行分组。
  • zipdict得到像作为指标的原始列AB作为价值结构系列。
  • unstack和我完成了。

gb = dfc.stack().str.split(':').groupby(level=0) 
gb.apply(lambda x: dict(zip(*x))).unstack() 

enter image description here