如何在pandas dataframe中创建序列?

2024-04-19 07:54:34 发布

您现在位置:Python中文网/ 问答频道 /正文

大家好,我有以下格式的数据:

User touchpoint conversion
A     C1            0
A     C2            0
A     C1            0
A     C4            1
A     C2            0
A     C1            0
A     C1            0
A     C1            1

我可以使用以下代码创建序列:

^{pr2}$

但是,当遇到转换值1时,我希望将序列拆分为子序列,例如:

sequence 1 : C1>C2>C1>C4
sequence 2: C2>C1>C1>C1

使用当前代码获取整个序列:

C1>C2>C1>C4>C2>C1>C1>C1

这方面的任何建议都会有帮助。谢谢您。在


Tags: 数据代码格式序列建议sequencec2c1
2条回答

我用另一个接近。你的df1拥有所有的组合,因为您没有指定断点。在

试试这个。。在

l = [i for i in range(len(data)) if data['conversion'][i] == 1]
pointer = 0
for pos in l:
    print('>'.join(data['touchpoint'][pointer:pos+1]))
    pointer = pos+1

试试这个

df = pd.DataFrame({'User': ['A','A','A','A','B','B','B', 'B'],
                 'touchpoint': ['C1', 'C2', 'C1', 'C4', 'C2', 'C1', 'C1', 'C1'],
                    'conversion': [0,0,0,1,0,0,0,1]})

df1 = df.groupby(['User']).aggregate(lambda x: list(x))
df1 = df1.apply(lambda x: "".join([x[1][i] + '*' if value else x[1][i] + '>' for i, value in enumerate(x[0])]), axis = 1)
df1 = df1.apply(lambda x: x.split('*')[:-1])

您只需添加一个特殊字符,比如*,来指示拆分的位置。在

输出

^{pr2}$

它是一个带有索引用户的序列对象

相关问题 更多 >