代码之家  ›  专栏  ›  技术社区  ›  user3104352

如何在python中更新交叉表值

  •  2
  • user3104352  · 技术社区  · 7 年前

    我试图用我给出的正常噪声改变交叉表的值。但我更改后无法更新它。你能帮我吗?

    cross_tab1 = pd.crosstab(data[0], [data[1], data[2]], rownames=['data0'], colnames=['data1', 'data2'])
    c1 = cross_tab1.unstack()
    
    
    for (a, b, c), count in c1.iteritems():
        count = np.round(count + np.random.normal(0, 2.0)).clip(min=0)
        cross_tab1.loc(a,b,c, int(count))
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   jezrael    7 年前

    我想你可以用 loc 用于指定新值,最后用于 DataFrame unstack

    for (a, b, c), count in c1.iteritems():
        count = np.round(count + np.random.normal(0, 2.0)).clip(min=0)
        c1.loc[a,b,c] = int(count)
    
    df = c1.unstack(2).T
    

    但更好的是使用 applymap :

    df1 = cross_tab1.applymap(lambda x: np.round(x + np.random.normal(0, 2.0)).clip(min=0)) \
                    .astype(int)