pandas - 显示原始数据框旁边的应用结果

时间:2015-03-10 14:46:34

标签: pandas

我有一个pandas DataFrame,然后我将一个函数应用于一堆列,我得到一个新的结果列。然后我希望能够使用原始列值检查新列的结果。

  a  b
0 0  0
1 0  1
2 1  0
3 1  1

我想要一个不改变原始df的单行将返回这个(假设我正在应用xor函数):

  a  b xor
0 0  0 0
1 0  1 1
2 1  0 1
3 1  1 0

我现在正在做的是(我在shell中工作,所以第二行打印'df'):

df['result'] = df.apply(xor, axis=1)
df

(foo得到一个'row',让我们说它对所有列做了一些事情,所以我不是针对列特定的,最后我想看到所有原始列和结果列旁边它们)。

我不喜欢这个选项,因为它是两步修改原始数据帧。我的目标是一次又一次地检查函数,所以我希望能够在原始值旁边显示结果。

有一个简单的一步到位的方法吗?

谢谢,

2 个答案:

答案 0 :(得分:2)

这应该可以解决问题:

pd.concat([df,df.apply(foo,axis=1)],axis=1)

答案 1 :(得分:1)

此功能用于并排显示两个数据结构。您需要创建第二个数据框或系列,或者可能使用:

side_by_side(df1, df1.apply(foo))

用于Wes McKinney的presentation

def side_by_side(*objs, **kwds):
    from pandas.core.common import adjoin
    space = kwds.get('space', 4)
    reprs = [repr(obj).split('\n') for obj in objs]
    print adjoin(space, *reprs)

使用示例:

df1 = pd.DataFrame(np.random.rand(10,3))
df2 = pd.DataFrame(np.random.rand(10,3))


side_by_side(df1, df2)
          0         1         2              0         1         2
0  0.424040  0.264855  0.025566    0  0.708604  0.306784  0.645058
1  0.932507  0.522241  0.915979    1  0.839926  0.911550  0.152661
2  0.291583  0.318066  0.242179    2  0.085973  0.522005  0.960857
3  0.953090  0.126239  0.161788    3  0.481225  0.093825  0.191482
4  0.739598  0.834832  0.583147    4  0.053519  0.954738  0.846373
5  0.633130  0.740508  0.335575    5  0.281024  0.244012  0.661398
6  0.158822  0.399715  0.890146    6  0.842356  0.090806  0.562401
7  0.864191  0.917889  0.715713    7  0.011725  0.274691  0.729003
8  0.139880  0.662035  0.943423    8  0.105924  0.405305  0.140807
9  0.544886  0.577185  0.623016    9  0.192138  0.558908  0.633519