【问题标题】:Relabeling pivot tables重新标记数据透视表
【发布时间】:2014-03-17 10:56:43
【问题描述】:

假设我有 2 个数据透视表并将它们合并,为了简单起见,我将使用二进制数字。下面的代码有效:

import pandas as pd

df=pd.DataFrame({'axis1': ['A','B','C','D'],
                 'A': [1,0,1,1],
                 'B': [1,0,0,0],
                 'C': [0,1,0,1],
                 'D': [1,0,1,0],
                 }).set_index(['axis1'])


df2=pd.DataFrame({'axis1': ['A','E','G','D'],
                 'E': [1,0,0,1],
                 'B': [1,1,0,0],
                 'C': [1,1,0,1],
                 'F': [1,0,1,0],
                 }).set_index(['axis1'])

print (df)
print (df2)

df3 = pd.concat((df, df2)).fillna(0)
g=df3.groupby(df3.index)
g=g.sum()
print(g)

有没有办法将所有数据标记为这样的字符串1='Y'0='N'2='M'

当将 2 个表与非二进制数字(即 5、3、2.5)组合在一起时,有一种方法可以区分哪些数据完全来自 df、完全来自 df2,哪些来自 df1+ 的组合df2?

例如,在下图中,我如何将数据从两个数据帧中分成红色、紫色和蓝色 3 组。

【问题讨论】:

    标签: python merge pandas pivot-table


    【解决方案1】:
    In [7]: replacers = {1: '1=Y', 0: '0=Y', 2: '2=M'}
    
    In [10]: g.replace(replacers)
    Out[10]: 
             A    B    C    D    E    F
    axis1                              
    A      1=Y  2=M  1=Y  1=Y  1=Y  1=Y
    B      0=Y  0=Y  1=Y  0=Y  0=Y  0=Y
    C      1=Y  0=Y  0=Y  1=Y  0=Y  0=Y
    D      1=Y  0=Y  2=M  0=Y  1=Y  0=Y
    E      0=Y  1=Y  1=Y  0=Y  0=Y  0=Y
    G      0=Y  0=Y  0=Y  0=Y  0=Y  1=Y
    
    [6 rows x 6 columns]
    

    我不确定你的第二个问题是什么意思。或许您可以举一个您预期的输出示例?

    【讨论】:

    • 找到第二个问题的答案pd.merge(df, df2, how='inner')是merge中的方法'how'。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 2016-09-07
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 2017-03-16
    相关资源
    最近更新 更多