Pandas DataFrame的Pivot和concat值

时间:2017-10-27 22:20:35

标签: python

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

    contactId    ticker
0    ABC         XYZ
1    ABC         ZZZ
0    BCA         YYY

像这样创建一个支点:

final_df = final_df.pivot_table(index='contactId', columns='ticker', aggfunc=len, fill_value=0) 

结果如下:

ticker       XYZ    ZZZ    YYY
contactId    
ABC          1      1      0
BCA          0      0      1

作为中间步骤(请参阅下面的请求),我假设我们需要转换枢轴,以便如果值> 0,则滚动,否则(空白)。即:

ticker       XYZ    ZZZ    YYY
contactId    
ABC          XYZ    ZZZ      
BCA                        YYY

因为我要找的输出是空格分隔的代码列表+每个contactId的文本字符串:

contactId   ticker    description
ABC         XYZ ZZZ   The client is holding: XYZ ZZZ
BCA         YYY       The client is holding: YYY 

对于中间步骤,我尝试了以下步骤(但它通过ValueError:Grouper for' ticker' not one-dimensional):

final_df = final_df.pivot_table(index='contactId', columns='ticker', values='ticker', fill_value="") 
你能帮忙吗?感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

受@sharatpc建议的启发,在添加以下内容后删除重复项:

df = df[pd.notnull(df['contactId'])]

这对我有用:

df = df.set_index('contactId').groupby('contactId')['ticker'].transform(lambda x: ' '.join(x)).reset_index()