【问题标题】:How do I modify a particular cell of a pandas DataFrame while iterating?如何在迭代时修改 pandas DataFrame 的特定单元格?
【发布时间】: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

标签: python pandas dataframe


【解决方案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 为什么需要循环?你能通过问题中的例子来解释一下吗?谢谢
    猜你喜欢
    • 2016-12-26
    • 2019-03-19
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 2017-08-12
    • 1970-01-01
    • 2017-10-28
    相关资源
    最近更新 更多