【发布时间】:2019-12-12 18:09:26
【问题描述】:
我是 pandas 的新手,正在尝试基于键加入数据框值。
我的数据框如下所示:
Slug Position Brand Session Transactions Ecommerce CTR Click
A 0 aaa
A 1 bbb
A 2 ccc
A 3 ddd
B 0 bbb
B 1 ccc
B 2 ddd
B 3 eee
C 0 aaa
C 1 ccc
C 2 ddd
A 70 100 500
A abc fgh
B 60 900 400
B abd fgj
C 50 400 100
C ab fp
我正在尝试使我的输出如下:
输出:
Slug Position Brand Session Transactions Ecommerce CTR Click
A 0 aaa 70 100 500 abc fgh
A 1 bbb
A 2 ccc
A 3 ddd
B 0 bbb 60 900 400 abd fgj
B 1 ccc
B 2 ddd
B 3 eee
C 0 aaa 50 400 100 ab fp
C 1 ccc
C 2 ddd
数据集:
df = pd.DataFrame({'Slug': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'A', 'A', 'B', 'B', 'C', 'C'],
'Position': ['0', '1', '2', '3', '0', '1', '2', '3', '1', '2', '3', '', '', '', '', '', ''],
'Brand': ['aaa', 'bbb', 'ccc', 'ddd', 'aaa', 'bbb', 'ccc', 'ddd', 'aaa', 'bbb', 'ccc', '', '', '', '', '', ''],
'Session': ['', '', '', '', '', '', '', '', '', '', '', '70', '', '60', '', '50', ''],
'Transaction': ['', '', '', '', '', '', '', '', '', '', '', '80', '', '50', '', '40', ''],
'Ecommerce': ['', '', '', '', '', '', '', '', '', '', '', '700', '', '600', '', '500', ''],
'CTR': ['', '', '', '', '', '', '', '', '', '', '', '', 'abc', '', 'abd', '', 'ffp'],
'Click': ['', '', '', '', '', '', '', '', '', '', '', '', 'ab', '', 'fgh', '', 'fp']})
所以只需根据匹配的第一个键加入值。
我不确定是否应该使用联接或合并,因为数据在同一个数据框中,而不是两个不同的数据框中。
我试过了
df.set_index('Slug').join(df.set_index('Slug'))
但得到这个错误:
ValueError: columns overlap but no suffix specified: Index(['Position', 'Brand', 'Sessions', 'Transactions', 'Ecommerce CR', 'CTR',
'All clickouts'],
dtype='object')
我将如何继续努力以获得我想要的结果?谢谢你的建议。
【问题讨论】:
-
由于所有的空格,您的数据真的很难复制和用于创建答案。最好的方法是通过
pd.DataFrame(..)包含您的数据,以便我们可以复制并运行代码。 -
嗨@Erfan,我已经添加了数据框,希望对您有所帮助。
-
干得好,为努力点赞
-
顺便说一句,这还不完全正确,请查看
CTR和click列,那里的值是错误的。可以编辑吗? -
@Erfan,在问题中修复了它,感谢您发现它。