python - Pandas :在 Dataframe 子集上使用 iterrows

标签 python loops pandas subset

用 DataFrame 的子集执行 iterrows 的最佳方法是什么?

让我们来看下面这个简单的例子:

import pandas as pd

df = pd.DataFrame({
  'Product': list('AAAABBAA'),
  'Quantity': [5,2,5,10,1,5,2,3],
  'Start' : [
      DT.datetime(2013,1,1,9,0),
      DT.datetime(2013,1,1,8,5),
      DT.datetime(2013,2,5,14,0),
      DT.datetime(2013,2,5,16,0),
      DT.datetime(2013,2,8,20,0),                                      
      DT.datetime(2013,2,8,16,50),
      DT.datetime(2013,2,8,7,0),
      DT.datetime(2013,7,4,8,0)]})

df = df.set_index(['Start'])

现在我想使用 itterrows 函数修改这个 DataFrame 的一个子集,例如:

for i, row_i in df[df.Product == 'A'].iterrows():
    row_i['Product'] = 'A1' # actually a more complex calculation

但是,更改不会持续存在。

是否有可能(除了使用索引“i”的手动查找)对原始 Dataframe 进行持久更改?

最佳答案

为什么需要 iterrows()?我认为在 pandas(或 numpy)中使用矢量化操作总是更可取:

df.ix[df['Product'] == 'A', "Product"] = 'A1'

关于python - Pandas :在 Dataframe 子集上使用 iterrows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19666218/

相关文章:

python - findAll 函数 BeautifulSoup

python - 用 Python 自动化无聊的东西——第 5 章,奇幻游戏 list

python - 在 pandas 索引对象上运行内置方法时出现奇怪的错误

python - 循环以从给定列表中选择特定数字

php - 读取大文件时出现内存不足错误

python - 如何在保留所有行的同时连接行并使每组有一个结果值

python - 在特定索引之后将值添加到数据框列

python - 将数据帧上传到bigquery时,日期类型的对象不是JSON可序列化错误?

python - 井字棋电脑 Action

python - 有没有办法在 Python 中遍历列表的子部分