如何在迭代时修改 pandas DataFrame 的特定单元格?

Posted

技术标签:

【中文标题】如何在迭代时修改 pandas DataFrame 的特定单元格?【英文标题】:How do I modify a particular cell of a pandas DataFrame while iterating? 【发布时间】:2019-08-06 18:55:25 【问题描述】:
                   Name  Age  Quantity  Fee  ... wood  wood flooring yellow zoo
0                 Puppy    2         1  150  ...    0              0      0   0
1                London   24         1    0  ...    0              0      0   0
2              Snowball   20         1  150  ...    0              0      0   0
3                Malibu    5         1  100  ...    0              0      0   0

我希望名称 Snowballyellow 更新为 2 的值(等等)。我需要遍历所有这些,进行一些处理并更新特定的列。最好的方法是什么?

【问题讨论】:

你可以先看看Indexing and Selecting Data 为了扩展yatu的评论,OP你想基本上选择Name=Snowball所在的行,然后分配yellow=2 【参考方案1】:

你可以使用

df.loc[df['Name']=='Snowball','yellow'] = 2

loc的第一个参数是行索引,第二个是选择列

【讨论】:

【参考方案2】:

要索引特定单元格并更改其值,请使用 df.loc:

df.loc[df.Name == 'Snowball', 'yellow'] = 2

要有效地遍历数据框的所有行,请使用 df.iterrows:

values_to_insert_into_yellow_by_name = 'Puppy': 1, 'London': 2, 'Snowball': 2, 'Malibu': 3
for idx, row in df.iterrows():
    name = df.loc[idx, 'Name']
    insert = values_to_insert_into_yellow_by_name[name]
    df.loc[idx, 'yellow'] = insert

您可以使用字典来存储需要插入的值。

【讨论】:

如何有效地遍历所有行? @Shamoon 为什么需要循环?你能通过问题中的例子来解释一下吗?谢谢

以上是关于如何在迭代时修改 pandas DataFrame 的特定单元格?的主要内容,如果未能解决你的问题,请参考以下文章

pandas使用itertuples函数迭代dataframe中的数据行并自定义修改行中的数值(update row while iterating over the rows)

如何迭代pandas dataframe的行

一次访问多个索引行时有效地迭代 pandas.DataFrame

带有迭代的 Pandas DataFrame 切片

迭代和编写Pandas Dataframe NaNs回MySQL

解析嵌套的 JSON 并迭代到 Pandas Dataframe