【问题标题】:how to set value for a specific cell in a dataframe如何为数据框中的特定单元格设置值
【发布时间】:2018-11-17 00:02:15
【问题描述】:

我有一个单元格,我想要它的值。我知道单元格的列名及其行号(但不知道其行索引)

  A B
h 1 2
n 3 4

说,我上面有数据框,我必须更改第一行上的单元格(我不知道它的索引'h'),列名为'B'。

我尝试df['B'].iloc[0]=10,它有效,但它总是给出警告。

' SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame'

那么为我的案例更改单元格值的正确方法是什么?

【问题讨论】:

    标签: python pandas dataframe indexing


    【解决方案1】:

    混合标签和位置索引需要一些额外的工作,因为:

    • loc / at 专为标签设计;
    • iloc / iat 专为位置索引而设计。

    您可以将行位置索引转换为标签:

    df.at[df.index[0], 'B'] = 10
    

    或者您可以将列标签转换为位置索引:

    df.iat[0, df.columns.get_loc('B')] = 10
    

    注意at / iat 应该优先于 loc / iloc 以便快速标量访问/设置。

    【讨论】:

    • 谢谢!另一个后续问题:如何提取数据框的一列?我需要提取的列可以编辑原始数据框。如果我使用 mycol = df ['B],它似乎会改变原始数据框。即如果我运行 mycol.iloc[0]=10,数据框中的原始第一个条目也将从 1 更改为 10。如何避免?谢谢!
    • 要处理副本,请使用copy,例如mycol = df['B'].copy()。如果以上回答了您的问题,请accept the answer 让其他用户知道。
    猜你喜欢
    • 2022-11-28
    • 1970-01-01
    • 2012-02-21
    • 2020-11-12
    • 2022-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    相关资源
    最近更新 更多