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

2024-05-20 00:05:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图编写一个函数,使用户能够轻松地选择pandas数据帧中的特定单元格并更改其值。例如,在下面的数据框中,我希望用户能够通过日期和操作选择单元格,比如“2018-03-02”和“肥料”,然后将值更改为“1”。在

Sample Chart

我已经在2018-03-02和“剪切”中使用了这个代码(数据帧名为q):

q.iat[1,1]=1

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


Tags: 数据sample方法函数代码用户pandas字典
3条回答

您的数据帧使用列名称和索引编制索引。你可以用 set_indexdf.set_index('date')
然后使用日期索引和“剪切”列更改带有.loc的值: df.loc('2018-03-02','Cutting') = 1

只需使用pandas的名称,就可以在pandas中按名称选择列:

q['Manure']

为了选择行,您需要一个索引来唯一地标识这些行,如果您确保它的格式能够唯一地标识这些行,那么这可能就是日期。 例如:

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

然后您可以选择每个单元格执行以下操作:

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

^{}

使用^{}代替iat实现基于标量标签的高效索引:

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

summarise

A short guide to indexing:

  1. Use iat / at for scalar access / setting by integer position or label respectively.
  2. Use iloc / loc for non-scalar access / setting by integer position or label respectively.

相关问题 更多 >