我要做的是使用map函数将数据透视表绑定到另一个数据帧。 A1:A4是表示不同位置的列。因此,数据透视表中的值表示A1或A3等实例的数量
我有一个数据框和一个数据透视表。数据框(df1)如下所示:
SubscriberKey Inst A1 A2 A3 A4
'abc' 2 0 0 0 0
'bcd' 4 0 0 0 0
'cde' 1 0 0 0 0
'def' 0 0 0 0 0
'efg' 0 0 0 0 0
我的数据透视表(pt1)看起来像这样。它还有一个多级列标题,因为它是一个数据透视表。澄清多级列标题的含义是单列标题输出('Instance','A1')。无论如何,下面是我的数据透视表(pt1)的快照:
Subscriber Key Instance Instance Instance Instance
Linkname A1 A2 A3 A4
'abc' 2 0 2 0
'bcd' 4 1 1 2
'cde' 1 1 0 0
我想以某种方式根据枢轴中的内容填充我的df的A1:A4列。 df具有比数据透视表包含的用户密钥更多的用户密钥,因此行数不相同。
输出如下:
SubscriberKey Inst A1 A2 A3 A4
'abc' 2 0 0 2 0
'bcd' 4 0 1 1 2
'cde' 1 1 0 0 0
'def' 0 0 0 0 0
'efg' 0 0 0 0 0
感谢任何帮助,谢谢!我已经尝试过df1.update(pt1 [column])并返回'Type Error:expected tuple,got str'
答案 0 :(得分:1)
更新应该有效。试试这个:
df1 = df1.set_index('SubscriberKey')
df1
Output:
Inst A1 A2 A3 A4
SubscriberKey
'abc' 1 0 0 0 0
'bcd' 2 0 0 0 0
'cde' 1 0 0 0 0
'def' 3 0 0 0 0
'efg' 0 0 0 0 0
df2 = df2[1:]
df2.columns = ["SubscriberKey","A1","A2","A3","A4"]
df2 = df2.set_index('SubscriberKey')
Output:
A1 A2 A3 A4
SubscriberKey
'abc' 1 0 2 0
'bcd' 0 1 1 2
'cde' 1 1 0 0
然后做:
df1.update(df2)
df1
给出:
Inst A1 A2 A3 A4
SubscriberKey
'abc' 1 1 0 2 0
'bcd' 2 0 1 1 2
'cde' 1 1 1 0 0
'def' 3 0 0 0 0
'efg' 0 0 0 0 0
答案 1 :(得分:1)
> line <- "01+0111. 02+0262. 03+1900. 04-15.68 05+64.50 06+08.82 07+1.013 08+0.943"
> gsub("\\d\\d\\+", "", line)
[1] "0111. 0262. 1900. 04-15.68 64.50 08.82 1.013 0.943"
在处理多级索引后,这也有效。有很多方法可以解决这个问题。我通常只使用.reset_index()