编辑熊猫数据框中的特定单元格?

时间:2019-01-13 22:59:48

标签: python pandas indexing

我正在尝试编写一个函数,使用户可以轻松地在pandas数据框中选择特定的单元格并更改其值。例如,在下面的数据框中,我希望用户能够按日期和操作选择一个单元格,例如“ 2018-03-02”和“ Manure”,并将值更改为“ 1”。

Sample Chart

我已经在2018年3月2日完成了此操作,并使用此代码(数据框命名为q)“剪切”:

q.iat[1,1]=1

但是,我希望能够使用类似q.iat["2018-03-02", "Cutting"]=1的方式来更改单元格,但是我不确定如何执行此操作,因为它说.iat仅能识别整数位置。除了.iat之外我还可以使用,还是需要为每个日期和每一列设置一个字典?

4 个答案:

答案 0 :(得分:0)

您的数据框使用列名和索引建立索引。您可以使用 set_indexdf.set_index('date')
然后,同时使用日期索引和“剪切”列,通过.loc更改值: df.loc('2018-03-02','Cutting') = 1

答案 1 :(得分:0)

pd.DataFrame.at

使用at代替iat进行基于标量标签的有效索引:

q.at['2018-03-02', 'Cutting'] = 1

summarise

  

索引编制的简短指南:

     
      
  1. 分别使用iat / at用于按整数位置或标签进行标量访问/设置。
  2.   
  3. 分别使用iloc / loc进行非标量访问/通过整数位置或标签进行设置。
  4.   

答案 2 :(得分:0)

您可以使用熊猫的名称按名称选择列:

q['Manure']

为了选择行,您需要一个索引来唯一地标识它们,如果您确定其采用可以唯一标识的格式,则可以是日期。 例如:

q = q.set_index(pd.DatetimeIndex(q['Dates']))

然后您可以选择要执行的每个单元格

q.loc[<rowIndex>, <colName>]

答案 3 :(得分:-1)

您可以使用DataFrame.loc,这应该可以帮助您开始:https://pandas.pydata.org/pandas-docs/stable/indexing.html

在您的示例中:

q.loc["2018-03-02","Manure"]=1