在迭代pandas数据帧并进行更改时,使用更改更新数据帧的更好方法是什么?下面的一个例子,我现在正在使用indexer ix
来定位要更新的行,我认为这不是最好的方法,尤其是在数据很大的情况下:
print df
id | A | B
01 | 374 | 2014-02-01 04:45:04.401502
02 | 284 | 2014-03-12 21:23:12.401502
03 | 183 | 2014-02-01 09:12:08.401502
for row in df.itertuples():
id = row[1]
col_a = row[2]
col_b = row[3]
N = random.randint(2,5)
for i in xrange(0, N):
new_col_a = col_a + 1
new_col_b = datetime.datetime.now()
#update dataframe's A, B respectively
df.ix[df['id'] == id, ['A', 'B']] = [col_a, col_b]
print df
id | A | B
01 | 374 | 2014-02-01 04:45:04.401502
01 | 375 | 2016-12-07 07:45:04.401502
01 | 376 | 2016-12-07 07:45:04.401502
01 | 377 | 2014-12-07 07:45:04.401502
02 | 284 | 2014-03-12 21:23:12.401502
02 | 285 | 2016-12-07 07:45:04.401502
02 | 286 | 2016-12-07 07:45:04.401502
03 | 183 | 2014-02-01 09:12:08.401502
03 | 184 | 2016-12-07 07:45:04.401502
03 | 185 | 2016-12-07 07:45:04.401502
03 | 186 | 2016-12-07 07:45:04.401502
不是很好的解决方案,因为循环。在
因此,首先为} 它和apply函数,它可以在自定义函数之外工作:
df
自定义函数的每一行apply
,其中创建新的DataFrame
,并将其附加到列表dfs
。然后^{相关问题 更多 >
编程相关推荐