【问题标题】:Python dataframe turn click path row to columnPython数据框将点击路径行转为列
【发布时间】:2015-08-04 04:28:15
【问题描述】:

我有一个如下所示的 Python Pandas 数据框:

df = pd.DataFrame({'id':[1, 1, 1, 2, 2], 'm':['email', 'organic', 'cpc', 'cpc', 'direct']})
print df
   id        m
0   1    email
1   1  organic
2   1      cpc
3   2      cpc
4   2   direct

改造后,我想得到

df_transformed = pd.DataFrame({'id':[1,2], 'path' :['p1-p3-p2', 'p2-p1']})
print df_transformed
   id      path
0   1  p1-p3-p2
1   2     p2-p1

请注意,每个 id 的页面路径长度可能不同。

我怎么能得到这个?谢谢。

【问题讨论】:

  • p1,p2,p3 来自哪里?

标签: python python-2.7 pandas dataframe


【解决方案1】:

我不知道,你到底是做什么的。

所以,我尝试了更多的组合:

1.输入“p”

从您的答案的修订中,我得到:
d = {'id':[1, 1, 1, 2, 2], 'path':['p1', 'p3', 'p2', 'p2', 'p1']}

那么代码是:

import numpy as np
import pandas as pd

d = {'id':[1, 1, 1, 2, 2], 'path':['p1', 'p3', 'p2', 'p2', 'p1']}
o = pd.DataFrame({'id':[1,2], 'path' :['p1-p3-p2', 'p2-p1']})

df = pd.DataFrame(d)
print df
print o

df = df.groupby('id').agg({'path': lambda x: '-'.join(x)})
print df
        path
id
1   p1-p3-p2
2      p2-p1

2.输出“m个单词”

意思是:

o = pd.DataFrame({'id':[1,2], 'm' :['email-organic-cpc', 'cpc-direct']})

那么代码是:

import numpy as np
import pandas as pd

d = {'id':[1, 1, 1, 2, 2], 'm':['email', 'organic', 'cpc', 'cpc', 'direct']}
o = pd.DataFrame({'id':[1,2], 'm' :['email-organic-cpc', 'cpc-direct']})

df = pd.DataFrame(d)

print df
print o

df = df.groupby('id').agg({'m': lambda x: '-'.join(x)})
print df
                    m
id
1   email-organic-cpc
2          cpc-direct

3。重新映射 - 从“m”到“p”

(我必须将最后一项 direct 更改为 email,因为重新映射会出错)

import numpy as np
import pandas as pd

d = {'id':[1, 1, 1, 2, 2], 'm':['email', 'organic', 'cpc', 'cpc', 'email']}
o = pd.DataFrame({'id':[1,2], 'path' :['p1-p3-p2', 'p2-p1']})

dictionary = {'email': 'p1', 'cpc': 'p2', 'organic': 'p3'}

df = pd.DataFrame(d)
print df
df = df.replace({'m': dictionary})
df = df.rename(columns = { 'm':'path'})

print df
print o

df = df.groupby('id').agg({'path': lambda x: '-'.join(x)})
print df
        path
id
1   p1-p3-p2
2      p2-p1

【讨论】:

  • 非常感谢。这正是我想要的。
猜你喜欢
  • 1970-01-01
  • 2020-10-22
  • 1970-01-01
  • 1970-01-01
  • 2021-04-12
  • 2021-04-19
  • 2012-04-01
  • 1970-01-01
  • 2016-02-05
相关资源
最近更新 更多