Pandas-高效地迭代DataFrame行,并通过列名获取值



Pandas中的迭代是出了名的效率低下,最好尽可能避免(使用apply进行数据操作等(。不幸的是,在我的情况下,这是不可避免的。

尽管众所周知,最有效的方法是迭代,但该函数使用元组的str名称访问列数据会引发以下错误:

TypeError:元组索引必须是整数或切片,而不是str

有些人认为这个问题的解决方案只是切换到iterrows,但如前所述,这并不有效。

如何在使用列的str名称来获取其行值的同时使用迭代?

本质上,只需要使用所需列的索引即可。由于元组中的第一个值是原始数据帧的索引,因此可以使用原始数据帧中的列索引,并添加一个来说明索引。

df = pd.DataFrame(some_data)
col_idx = df.columns.get_loc('col name') + 1  # +1 to account for the tuple Index
for row in training_df.itertuples():
        val = row[col_idx]
        print(val)

这个解决方案可能不是最优雅的选择,但它有效:(

最新更新