【发布时间】:2013-11-09 01:55:20
【问题描述】:
使用 DataFrame 的子集进行迭代的最佳方法是什么?
让我们举个简单的例子:
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”进行手动查找除外)对原始数据帧进行持久更改?
【问题讨论】:
-
您是否尝试通过从不同列获取参数来将函数应用于每一行?这已经是answered here。
标签: python loops pandas subset