如何在迭代时修改 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
我希望名称 Snowball
将 yellow
更新为 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