在Python中合并和转置列会产生TypeError:'>' ' int'的实例之间不受支持和' datetime.datetime'

时间:2017-11-02 13:02:19

标签: python python-3.x pandas datetime transpose

我将给出我尝试合并/转置的两个数据帧,Search_Exits和Page_Exits以及我正在使用的代码的最小样本。

Search_Exits

Search_Term    No._of_Searches_before     %_Search_Exits_before
hello           10                        .070
goodbye         100                       .030



Page_Exits

Search_Term    Exit_Pages_actual          Ratios
hello          /store/car                 0.30
hello          /store/b2b                 0.30
hello          /store/catalog/product/12  0.40
goodbye        /store/car                 1.00

我想在这里看到的结果是:

Search_Term    No._of_Searches_before  %_Search_Exits_before   /store/car /store/catalog/product12 /store/catalog/product23   /store/b2b

hello          10                    .070                       0.30             0.40                       0.00                        0.30   
goodbye        100                   .030                       1.00             0.00                       0.00                        0.00

我已经尝试了这个stackoverflow问题答案中给出的所有3个版本:How to merge two tables and transpose rows to columns但是对于所有这些问题都得到了相同的错误消息,我尝试了以下内容:

version 1

df = Search_Exits.merge(Page_Exits.groupby('Search_Term')['Exit_Pages_actual'].apply(lambda x: x.reset_index(drop=True)).unstack().reset_index())

version 2

Search_Exits.merge(Page_Exits.pivot_table(index='Search_Term', values='Ratios',columns='Exit_Pages_actual' + Page_Exits.groupby(['Search_Term'])['Exit_Pages_actual'].cumcount().astype(str)).reset_index())

version 3

(Search_Exits.set_index('Search_Term').join(Page_Exits.groupby('Search_Term')['Ratios'].apply(lambda x: x.tolist()).apply(pd.Series)).reset_index()) 

所有这三个都给我以下错误,所以如果有人可以提供帮助,我不知道该怎么做:

TypeError: '>' not supported between instances of 'int' and 
'datetime.datetime'

更新:

所以我尝试在我自己创建的模拟数据集上做同样的事情,我不再收到错误消息(所以我想我不知道导致数据中出现问题的原因)但是我有2个目前发生的事情与我希望它们发生的方式不同。首先,新生成的列没有标记相应的" Exit_Pages_actual"我希望它们被标记为。其次,每列不代表只应归因于特定" Exit_Pages_actual"的比率。所以我想知道我应该怎么做代码来改变它,让它像我想要的那样工作?目前,使用我的新数据集,剩下的就是:

Search_Term    No._of_Searches_before  %_Search_Exits_before  0    1    2  3 

hello          10                     .07                    0.3   0.3  0.4 NaN                                       
goodbye        100                    .03                    NaN   1.0  NaN   

的NaN

1 个答案:

答案 0 :(得分:0)

实际上,看起来我使用数据透视表找出了我想要的东西:

ApplicationWindow

然后使用pd.merge ....

定期合并