【问题标题】:Pandas dataframes: Combining location and integer indexingPandas 数据框:结合位置和整数索引
【发布时间】:2016-02-29 20:31:35
【问题描述】:

我想更改数据框中的值,方法是使用整数索引(使用 iloc)对行进行寻址,并使用位置索引(使用 loc)对列进行寻址。

有没有办法把这两种方法结合起来?我相信这就像说,我想要这个数据框的第 320 行和标题为“columnTitle”的列。这可能吗?

【问题讨论】:

  • 抱歉你在df['column Title'].iloc[319] = some_val之后吗?

标签: python pandas dataframe


【解决方案1】:

IIUC你可以直接在专栏上拨打iloc

In [193]:
df = pd.DataFrame(columns=list('abc'), data = np.random.randn(5,3))
df

Out[193]:
          a         b         c
0 -0.810747  0.898848 -0.374113
1  0.550121  0.934072 -1.117936
2 -2.113217  0.131204 -0.048545
3  1.674282 -0.611887  0.696550
4 -0.076561  0.331289 -0.238261

In [194]:
df['b'].iloc[3] = 0
df

Out[194]:
          a         b         c
0 -0.810747  0.898848 -0.374113
1  0.550121  0.934072 -1.117936
2 -2.113217  0.131204 -0.048545
3  1.674282  0.000000  0.696550
4 -0.076561  0.331289 -0.238261

【讨论】:

    【解决方案2】:

    ix 支持基于混合整数和标签的访问。

    df = pd.DataFrame(np.random.randn(5,3), columns=list('ABC'))
    >>> df
              A         B         C
    0 -0.473002  0.400249  0.332440
    1 -1.291438  0.042443  0.001893
    2  0.294902  0.927790  0.999090
    3  1.415020  0.428405 -0.291283
    4 -0.195136 -0.400629  0.079696
    
    >>> df.ix[[0, 3, 4], ['B', 'C']]
              B         C
    0  0.400249  0.332440
    3  0.428405 -0.291283
    4 -0.400629  0.079696
    
    df.ix[[0, 3, 4], ['B', 'C']] = 0
    
    >>> df
              A         B         C
    0 -0.473002  0.000000  0.000000
    1 -1.291438  0.042443  0.001893
    2  0.294902  0.927790  0.999090
    3  1.415020  0.000000  0.000000
    4 -0.195136  0.000000  0.000000
    

    【讨论】:

    • ix 现已弃用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 2020-06-02
    • 2021-12-31
    • 1970-01-01
    • 2019-12-09
    • 2018-03-11
    相关资源
    最近更新 更多