【问题标题】:Column operations in PandasPandas 中的列操作
【发布时间】:2013-02-03 15:50:28
【问题描述】:

假设我有一个数据框:

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.rand(4,5), columns = list('abcde'))

我想从所有其他列中减去 df.a 列中的条目。换句话说,我想获得一个数据框,它将以下列作为列:

|col_b - col_a | col_c - col_a | col_d - col_a|

我试过df - df.a,但这会产生一些奇怪的东西:

  0   1   2   3   a   b   c   d   e
0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN NaN NaN NaN

如何在 Pandas 中进行这种类型的列操作?另外,只是想知道df -df.a 是做什么的?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    你可能想要

    >>> df.sub(df.a, axis=0)
       a         b         c         d         e
    0  0  0.112285  0.267105  0.365407 -0.159907
    1  0  0.380421  0.119536  0.356203  0.096637
    2  0 -0.100310 -0.180927  0.112677  0.260202
    3  0  0.653642  0.566408  0.086720  0.256536
    

    df-df.a 基本上是在尝试沿另一个轴进行减法,因此索引不匹配,并且当使用像减法这样的二元运算符时,“不匹配的索引将合并在一起”(如文档所说)。由于索引不匹配,您最终会得到 0 1 2 3 a b c d e.

    例如,您可以通过转置事物更间接地到达同一个目的地, (df.T - df.a).T,通过翻转 df 意味着默认轴现在是正确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-12
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      相关资源
      最近更新 更多